Все строки в Memo заканчиваются переводом строки, в том числе и последняя, поэтому так и происходит. Если уж нужно по другому, то сохраняй самостоятельно:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
f: TextFile;
begin
AssignFile(f, 'abc.txt');
Rewrite(f);
i := 0;
while i<Memo1.Lines.Count-2 do
writeln(f, Memo1.Lines[i]);
write(f, Memo1.Lines[Memo1.Lines.Count-1]);
CloseFile(f);
end;