I have met the same problem. However, the workaround posted by u2o is not a perfect solution, because scrollbar still moves up, but as much as possible, so that the SelStart point is displayed at the bottom of the memo.
Detailed explanation:
On a long memo with vertical scroll bar and which has more data that can fit on its viewable area, when the vertical scroll bar is at the top and you make something like Memo.SelText := 'blabla'; there is no problem. If you make a change when to scroll bar is not at the top, the scroll bar moves to the top regardless of the position of the SelStart point, which in some cases moves out of the scope.
If you use a workaround like Memo.SelStart := Memo.SelStart; the scrollbar still tries to move to the top, but this movement is as much as the selection point stays in view, but at the bottom (last line) of the viewable area of the memo.
Normally no movement should occur, as in Delphi.