It's most likely a Byte Order Mark, which the .NET libraries generate by default. The only way I've suppressed generation of it is to save the document with an XmlTextWriter initialised with a null Encoding ("If encoding is null it writes out the stream as UTF-8 and omits the encoding attribute from the ProcessingInstruction."), or even with an ecoding of new UTF8Encoding(false). Check the docs and try it out, ISTR having some problem with settings that were supposed to suppress the BOM not actually doing so.
Iain.