So please allow me conclusion. The story begins with the question what strings are. In addition you can assign a value to a string, so strings are used as names for variables. So the common use of strings seems to be a side-effect. Two strings, which are identical in real live may not be identical in Maple.
Strings can be local to a procedure.
This make sense if you think in strings as mathematical symbols or variable names. Normaly an assignment to a local variable dies after the procedure was invoked and finished. Not so in maple. This is very usefull. But this concatenation does not work with local names within a procedure.