Idem, s'il y a un défaut, il est dans le fichier d'origine ou de ta "plateforme" vu que readfile rebalance le fichier tel quel.
S'il y avait un BOM :
* soit il est dans ton script et suivant si tu as un output_buffering, ça plante tes fonctions d'entêtes ou le BOM est reproduit en sortie
* soit il est dans le fichier de départ
Donc, au pire, même si tu te retrouvais avec 2 BOM UTF-8, seule la première ligne serait "décalée" de 6 octets. En aucun cas toutes les lignes s'en retrouveraient affectées.
Un truc type indentation avec espace insécable ? Du \r\n mal géré ?
PS : $_GET['file'] = on peut te faire envoyer le contenu de n'importe quel fichier auquel apache/php a accès en lecture ?!?