Lo que yo tengo entendido y es lo que sucede en PHP5, no sé si esto justamente cambia en PHP6 (lo dudo) es que los únicos que siempre pasan por referencia son los objetos, no todas las variables.
Código PHP:
$a = "hola";
function cambio($a){
$a = "mundo";
}
cambio($a);
echo $a;
Si quisiéramos que este caso modifique el valor original, tenemos que retornar el valor y asignarlo, o cuando pasamos el parámetro decir que es por referencia.
Si fuera por referencia, como sucede con los objetos en PHP5, entra el objeto sin decirle nada y sin retornar nada, queda modificado.