Por si les interesa, comparto los resultados de un benchmarck por los seis métodos, asignación directa, utilización de new con parámetro referenciado, factoría estática con return y factoría estática con parámetro referenciado, funcion comun con return, funcion comun con parametro referenciado.
El código esta aquí para que puedan replicar cómodamente la prueba:
https://eval.in/157663
Y los resultados son estos:
Cita: $foo = new Bar(); 0.00042104721069335938
new Foo($foo); 0.00061511993408203125
$foo = Factory::getBar(); 0.00041198730468750000
Factory::setBar($foo); 0.00048804283142089844
$foo = getBar(); 0.00042486190795898438
setBar($foo); 0.00047302246093750000
No voy a hacer un análisis, como diría cierto reggaetonero "Los números hablan por si solos"