abort で動いているのは「たまたま」
EAbort で MainWndProc まで一気に落っこちてしまうでしょ?
 key := 0;
で指定のキーを無視するように指定した後に、何か別の処理していたらどうするの?
「現在の TMemo の実装で動くから」ってのは理由にならんでしょ。

後半も、初心者相手なら「イベント処理中にダイアログを出してはいけません」
と指導すべきではないかな?手数の問題ではない。
面倒でもフラグ、ないしは自分自身へのカスタムメッセージの PostMessage と
もっていくべきだろう。