Pass by reference is the norm? That is moronic and encourages bugs. We should avoid destructive manipulation such as variable assignment as much as possible in programming; reference parameters exist to make it possible to modify a caller's variable.
If you have reference parameters in the language, then any foo(var) call can potentially modify var. If it doesn't today, then someone can change it tomorrow to give himself access to var inside foo.
The C convention of taking an explicit address is safe against this.
Pass by value should be the norm. Pass by reference shouldn't even exist.
Lisp is purely pass by value; there is no pass by reference: just that some types have reference semantics (cons cells, arrays, etc).