I appreciate everyone's answers here, and I think they are all great work-arounds for what is clearly a problem with the PHP code itself. Its been listed in PHP Bug Tracker since 2003-02-07 08:46. Its current status is WONT FIX in PHP Bug Tracker, but I have just recently posted a comment suggesting that this issue be resolved.
There's an option to vote on this as a problem, and maybe that might get this bug some attention and maybe get it solved.
According to RFC3629: adding BOM to a file is...
...to prepend a U+FEFF character to a stream of UCS characters as a 'signature'. A receiver of such a serialized stream may then use the initial character as a hint that the stream consists of UCS characters and also to recognize which UCS encoding is involved...
It's clear that the purpose of the BOM is not to be interpreted as a character in the data, but, as clearly stated, it's a "signature" of UTF-8 characters and a "hint" about the encoding of the characters.
Good code should adhere to the RFCs, not dance around the problem with unnecessary steps.