El problema no se encuentra en usar o no la propiedad "PlainText", sino en el uso de la propiedad "Text", la cual sólo devuelve la cadena de texto introducida ignorando toda información sobre el formato de dicha cadena.
Para poder almacenar el texto junto con el formato es necesario leer el "contenido" en sí del control (es decir, el "Stream"). Para no enrollarme mucho, pongo un ejemplo:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
CadenaFmt: TStringStream;
begin
CadenaFmt := TStringStream.Create('');
with RichEdit1 do
begin
SelAttributes.Color := clRed;
SelAttributes.Style := [fsBold];
SelText := 'Hola';
Lines.SaveToStream(CadenaFmt);
end;
ShowMessage(CadenaFmt.DataString);
CadenaFmt.Free;
end;
Si probais el ejemplo, vereis que se muestra un mensaje con la cadena de texto introducida mas las "etiquetas" utilizadas para dar formato a dicho texto. Si ahora lo ejecutais de nuevo poniendo la propiedad "PlainText" a "True", vereis que el mensaje muestra el texto normal sin dichas "etiquetas". Es decir, "PlainText" solo afecta a como será almacenado el texto del control (a la hora de usar los métodos "SaveToFile" o "SaveToStream"), con formato o sin él.
Saludos!