Почему == симметричный, а === несимметричный?
Потому что это два разных метода.
Почему такое поведение не отражено в сигнатуре === ?
Потому что это тоже два разных метода.
(1..3).method(:===).owner #=> Range
2.method(:===).owner #=> Fixnum
Это поведение отражено в сигнатурах
#=== и
#===.