Сообщения - более гибкая связь, чем вызов методов (который возник потом, когда ООП стали из Smalltalk перетягивать в Си). В частности, потому, что полностью динамическое связывание. Зачем же приковывать её к менее гибкому механизму? Зачем делать связывание этапа трансляции, по интерфейсу класса?
Некоторая несуразица и с точки зрения исторической (что от чего произошло), и с точки зрения технической.