Object references are not expensive to copy, as the name states it's a reference

thus they also behave different from the primitive types. You don't get a second character in game by passing the script object into a function :p
Since it's just a reference copying this (pass by value) should be of the same speed/memory as creating a reference (pass byref).
For primitive types thats different each integer,double,string,array,struct,dict gets deepcopied for a function call.
For integer and doubles this shouldnt matter, but for the other types this can be expensive.
Thus you can decide if its worth it or not. I would say for stuff like commands this never has any effect since they are typically shortrunning and speed does not matter there. For controlscripts or AIs this can matter since they are the overhead you always pay during the execution of you shard.
The downside is that escript like most of the scriptlanguages has no way to mark a reference const, so you can by accident modify something you better should not. (that makes it a PRO tip

)
The plus side is that its atleast transparent by the extra keyword "byref", for example python has an very complicated system with implicit reference effects, without any extra keyword.