Причина полагаться на конкретную реализацию hashCode () может быть в том случае, если он когда-либо будет сохранен в базе данных, файле или любом другом носителе. Плохие вещи (tm) произойдет, если данные будут считаны обратно при изменении алгоритма хеширования. Вы можете столкнуться с неожиданными коллизиями хэша и, что еще более тревожно, с невозможностью найти что-либо по его хэшу, поскольку хэш изменился между сохраняющимися данными и «сейчас».
На самом деле, это в значительной степени объясняет и пункт № 3 =)
Причиной для пункта № 1 может быть «разрешение взаимодействия». Если реализация hashCode заблокирована, данные могут быть безопасно разделены между различными реализациями Java. т.е. хеш данного объекта всегда будет одинаковым независимо от реализации.