普通DataGridViewを使う状況って、DBから取得したデータの表示/編集とかに使うと思うんだけど、
それはつまり行方向のデータ、つまりレコードが大量にある状況での使い方ですね。
大抵の場合、行>列です。
行数は1000とか10000とか扱っても、列は多くても精々20列とかその程度じゃないでしょうか。
なので、大量の行の追加(Rows.Add/AddRange)や仮想モードにおける行数の設定(RowCount)を使ってるときは気づかなかったのですが、
仕事でテーブルのデータを列方向に表示したいって要望があって、しかも仮想モードを使用する前提があって、
とりあえず行の場合と同じように、列を1000個設定してみたんですが
恐ろしいほど時間が掛かったのですよ。