Я не знаю причины такого конкретного выбора в ruby, но я просто укажу, что равенство - это сложная концепция.
Common Lisp, например, имеет eq, eql, equal, equalp, и в этом отношении =
Может быть очень полезно уметь различать две ссылки на один и тот же объект, два разных объекта одного типа с одинаковым значением, два объекта с одинаковым значением, но разных типов и т. Д. Сколько вариации имеют смысл, зависит от того, что имеет смысл в языке.
Если я правильно помню (я не использую ruby), предикаты rubys реализуют три из этих случаев
== равенство значений
EQL? равенство значения и типа
равны? верно только для одного и того же объекта