Потому что $foobar = $foo OR $foobar = $bar;
оценивается следующим образом:
Назначить foo для foobar.
* Есть ли там значение?
* Если нет, назначьте bar для foobar.
В то время как другой оценивает:
Есть ли значение в foo?
* Если это так, назначьте foobar = foo
* иначе назначьте foobar = bar
В первом примере, если! Foo вы назначаете дважды, если foo это может быть быстрее. Во втором примере вы устанавливаете значение только один раз. Держу пари, что разница в скорости незначительна.
Большая проблема здесь - удобочитаемость. Если короткая нотация 5.3 недоступна, то я все равно буду использовать троичную нотацию хотя бы потому, что этого ожидают другие программисты.
В этом отношении вы сэкономите больше времени и денег, используя традиционный троичный синтаксис, хотя бы потому, что когда люди видят ваш код, они не будут спрашивать себя, WTF?