The help text for string says:
Create a string from any values, except nothing, using the print function.
This is accurate. If you define print (which falls back to show), that method will be used by string interpolation. This is done so that for many-argument string interpolations (or calls to string) the output can be allocated just once: we create an IOBuffer, print each argument into it, then turn that into a String.