「に」と「で」は非常に多くの用法が見られるため、ここですべての用法を列挙することはできませんが、そうした中で両者が意味的に非常に似た関係に立つことがあります。その一例として例えば次のような場合が挙げられます。
広場にはたくさんの人が集まっていた。
広場ではたくさんの人が集まっていた。
これらは若干のニュアンスの違いはあるものの、そこに表されている内容はほぼ同じことがらを指し示しています。
この点について考える前に、まず「に」と「で」の違いについてごく単純な例を用いて観察することにします。
部屋に机がある。
×部屋で机がある。
部屋で子供がゲームをしている。
×部屋に子供がゲームをしている。
これらの例では「部屋で」と「部屋に」がどちらも[場所]を表していますが、後ろにくる表現によって「に」が使えない場合と「で」が使えない場合があります。この違いはそれぞれの[場所]が「何かが存在する場所」であるか「動作・行為・出来事が起こっている場所」であるかという違いに関係しています。すなわち[存在]の場所を指す場合は「に」が用いられ、[動作・行為・出来事]の場所を指す場合は「で」が用いられています。したがって、ご質問の「に」が使えない場合とは[動作・行為・出来事]の場所を指す場合ということになります。
では最初の例はなぜ「に」も「で」も用いることが可能なのでしょうか。それは「集まっている」という表現の表す意味の多様さと関係しています。「集まっている」は「集合する」という動作や「集会を開く」という行為が今目の前で行われているという解釈を持つ一方で「集まった結果そこに複数の人が存在する」という解釈も可能です。これはつまり文脈次第で「集まっている」という表現に動作や行為の解釈と存在の解釈のいずれを読みこむことも可能であるということです。したがって前者の場合は「集まる」行為を行う場所を「で」で指し示し、後者の場合は「集まっている」存在の場所を「に」で指し示すことになるわけです。