The syntax my_string = "substring1" "substring2" is a shortcut for my_string = "substring1" + "substring2" (typically when you want to split the string in multiple lines in order to make it more readable). If you do it with variables instead of constants, you're required to used the concatenation symbol.
EDIT: In your last edit, you mention the difference between string and string literal. True, they are the same data type. The difference is a question of notation. The literal is an explicit value (e.g. 2 is a notation that always represents 2) while a variable is a label that doesn't explicitly indicate its inner value (e.g. a could be 2 or 32).
In your case, "xx" will always be "xx" (literal) while during the execution of your script, your variable a could take different values (variable).