Начнем с того, что изначально все было не так, как надо. А если рассматривать предложенный вариант, то здесь не просто $a+$b; Здесь вот так:
$a; $b; $c = $a; $a = $c + $b;
Это не очевидно, но по сути примерно это и происходит, так как исходному массиву выполняется полное присвоение всех элементов. В случае же перебора имеющиеся уже объекты вообще никак не затрагиваются (только перетираются те, которые должны перетереться).