Because substring returns a new string, it does not affect the original in any way, be it a string or a stringbuilder.
Concat does the same thing: it returns a new string which is a combination of the parameters - it doesn't affect inputs in any way.
Think about it as numbers:
24 + 77
Returns the value 101 - it doesn't change the number 24 or 77 to 101 and you would not expect it to. So why would you expect concatenation of your first name with your second name to change either? If I concatenate mine: "Paul" and "Griffin" correctly, I get a different object, my "formal name": "Paul Griffin". That doesn't change what my mother used to call me: "Paul", or what policemen call me: "Mr Griffin".