Ob nun ArrayOfByte oder String ist egal.
In Delphi haben die String ein Feld für die Längenangabe, weswegen diesen bestimmte Steuerzeichen vollkommen egal sind.
Vermutlich das selbe Problem:
http://www.delphipraxis.net/154014-delphi-xor.html
Dein Memo kann mit bestimmten Zeichen nicht so umgehn, wie du es möchtest.
Sobald z.B. im Text, durch deine Kodierung, das Zeichen #0 vorkommt, dann bricht das Memo immer an dieser Stelle ab, da die #0 soviel wie "Ende" bedeutet.