Not that you should, of course, but the reason I generally would is efficiency, unless I had a specific reason to use ByVal.
For objects, ByRef passes the pointer itself, while ByVal passes a copy of the pointer (not, to be clear, another instance of the object).
ByRef allows one to change the...