None of your given options seem correct to me, although any of them will work.
Tmemo.lines is of type TStrings so you can load and store from stream and/or file using Tstrings standard methods.
Any Tstrings is assignment compatible to another Tstrings and any Tstrings is backed by streams, so here are some better options:
memo1.Lines.LoadFromFile(aFilename);
memo1.Lines.SaveToFile(aFilename);
memo1.Lines.Assign(aStringlist);
aStringlist.Assign(memo1.Lines);
memo1.lines.LoadFromStream(aStream); // any stream: e.g. file, memory, resource, network, database, etc
memo1.lines.SaveToStream(aStream);
memo1.lines.addstrings(aStringlist);
aStringlist.AddStrings(memo1.lines);
memo1.lines.Append(sString);
memo1.lines.AddText()
// etc
These methods are real "best practice".
See
https://www.freepascal.org/docs-html/rtl/classes/tstrings.htmlIf the text is static, option 3 is the best you came up with yourself.
This will in fact use internally one of the options I showed you by use of component streaming.
If the text is dynamic use one of the Tstrings options.