Version 1 is preferable because it is shorter and the compiler will in fact turn it into version 2 – no performance difference whatsoever.

More importantly given we have only 3
properties it might not make a
difference, but at what point do you
switch from concat to builder?

At the point where you’re concatenating in a loop – that’s usually when the compiler can’t substitute StringBuilder by itself.