In the References section of the User Guide it says:
Everything coming to and from a reference is treated as a String object. If there is an object that
represents $foo (such as an Integer object), then Velocity will call its .toString() method to resolve
the object into a String.
This would make more sense if it was at the end of the section on references so that the different
types of objects are introduced before this is.