EqualityComparer を覗いてみる
EqualityComparer
Equals メソッドで T のオブジェクトが null か判定しています。この部分は IL には box 化して null と比較するコードが出てきます。T が値型の場合は、リッチャー本(プログラミングMS .NET FRAMEWORK 第2版 (マイクロソフト公式解説書))によれば JIT コンパイラが比較処理を取り除いてしまうそうです。 struct 制約をつけると null との比較はコンパイルエラーになります。賢いんだけど、ややこしいですねぇ。