削除フラグを持つ理由

FK制約とアプリバグやオペミスからの復帰くらいかな。
暗黙の型キャストを理解していない人にdelete文を書かせるのは度胸が必要。

delete from tablename where char_column = 0;
とか
delete from tablename where int_column = 'a';

とかされちゃうと最悪^^;

で、削除管理テーブルを持つ方法と工数との比較検討でいいと思う。