Чем отличается «--$x» от «$x — 1» в данном контексте?
Как это ничем?--$x производит декремент переменной, а затем передает её в качестве аргумента функции.$x - 1 передает функции значение, полученное при декременте переменной $x.
Таким образом, в первом случае изменяется значение самой переменной, во втором - нет. А так как значения выражения вычисляются справа налево (для получения результата выражения необходимо сначала выполнить функцию), то в вашем примере, выделенный жирным $x, $x * fac(--$x) будет иметь значение, уже уменьшенное на единицу.
Когда понимаешь как отрабатывает компилятор, вопросов по рекурсии больше не возникает. 
В этом видео очень круто рассмотрен механизм работы рекурсии: https://www.youtube.com/watch?v=rh1mP02NFoM