У каждой функции в PHP есть два контекста: Статический и объекта. Метод - это обычная именованная функция, у которой заранее объявлены оба этих контекста. Таким образом мы получаем, что метод один и выделение памяти под него тоже одно, но для разных объектов меняется контекст (т.е. ссылка на this), а значит создание нового объекта - это всего лишь выделение this контекста для метода, т.е. тупо один адрес.
Помимо этого, создавая новый объект память не выделяется вообще. Если объект идентичен предыдущему, то адрес нового объекта соответствует предыдущему с пометкой разделения ZVAL-структуры при мутациях (до некоторого времени даже баг был, когда функция spl_object_hash возвращала одну и ту же строчку для двух разных объектов, которые содержали одни и теже данные). Во время изменений объектов - ссылка на изменённое поле разделяется и новое значение пытается занять память тех переменных (напоминаю, что структура ZVAL едина для всех типов переменных), которые были помечены для уничтожения через GC (т.е. refcount=0), это позволяет избавиться от лишних аллокаций памяти. Такая модель поведения, например, позволяет делать клонирование (оператор clone) и инстанциирование (оператор new) объектов без выделений памяти вообще.
P.S. Так было в какой-то из 5.х веток, когда я исследовал поведение пыха. Сейчас же, когда на носу 7.3 - я уже хз, много поменяли, хотя в основном работа была проведена по уменьшению потребления памяти zval объектами, DCE оптимизациям и AVX/SSE инструкциям, так что не думаю что сильно.