Это связано с тем, как varargs интерпретируются. Под капотом параметры varargs реализуются путем создания массива.
В случае Objects.hash(null)
вы передаете явно буквально пропуская ноль. Там нет массива. Когда вы делаете Objects.hash(map)
, он преобразуется в массив длины 1 с нулем в качестве первого и единственного элемента.
Из-за способа вычисления кода ha sh значение null и массив с 1 нулевой элемент получает разные коды ха sh.