Немного странный вопрос...
Но может ли кто-нибудь дать мне обоснование, почему это ожидалось бы поведением?
Мне это кажется совершенно странным...
//Makes perfect sense
object o = null;
o.GetHashCode().Dump();
NullReferenceException: Ссылка на объект не установлена в экземпляр объекта.
//Seems very odd
int? i = null;
i.GetHashCode().Dump();
0
Это, очевидно, означает:
int? zero = 0;
int? argh = null;
zero.GetHashCode() == argh.GetHashCode(); //true