Ich glaube es liegt an AddRaw. Dort wird die Binärdarstellung (UTF-16) des strings in den Stream geschrieben, was das angegebene Encoding außer Kraft setzt. So sollte es gehen:
Delphi-Quellcode:
procedure TXMLStreamWriter.AddRaw(const Data: String);
begin
FStream.WriteString(Data);
end;