You can set the SynEdit.TopLine instead.
Adding to SynEdit.Lines is a "raw" add. That is, it does not modify anything else. No caret move, no scroll. Not even undo-info. (I.e. after SynEdit.Lines.Add the undo info is cleared).
There is SynEdit.SetTextBetweenPoints (maybe also TextAtCaret, not sure) that can set the caret. But it is a whole lot more processing intensive. So if you just add to the end of the buffer, then adjust the top line
SynEdit.TopLine := MaxInt;
Of course if the user scrolled up, you need to decide if you want to keep scrolling.