Man
kann ganz ganz normal auf String casten,
muss es aber nicht immer. Ich denke darum geht es dem Fragesteller. Bei dem Plus-Operator ist es so definiert, dass String+X (wobei X eine beliebige Klasse sein kann), als String+X.toString() interpretiert wird. Als Grund würde ich persönlich Faulheit der Entwickler vermuten

. toString ist etwas das
jedes Objekt immer hat (mindestens geerbt, bei ordentlicher Programmierung auch implementiert) und das sollte eine Beschreibung des Objektes beinhalten, vielleicht hat das bei der Entscheidung eine Rolle gespielt.