Лично мне кажется, хотя я и сам только начал изучать C-objective, что это всего лишь исторически сложившаяся концепция, которая принципиально на практике ничем не отличается, кроме формы записи.
В теории да, различия есть, что при вызове метода мы сразу переключаемся на исполнение блока кода (метода) этого самого объекта и например попытка переключиться к исполнению кода, когда объект равен null - вызовет проблему.
Посылая же сообщение, поведение более динамично, в том плане, что объект может и не ответить на наше сообщение. Если мы для пустого указателя пошлем запрос, то ничего страшного не случится, мы просто не получим ответа на наш запрос и все.
А то, что есть "стандартная" форма записи, то это наследие от C, ведь C-Objective только надмножество над С. Плюс вид записи в сообщениях более читабелен на английском, аргументы не просто списком идут, а гармонично вливаются внутрь наименования метода. Хотя привыкать к такому конечно приходится какое-то время.
Чуть подробнее можно например
тут глянуть