どっちも同じ.concatを呼んでいるだけだから、一緒です。
ということを実証してみた
C#コード
string a="A";
string c = a+"B";
string d="A";
d+="B";
MSIL
.maxstack 2
.locals (
string text1,
string text2,
string text3)
L_0000: ldstr "A"
L_0005: stloc.0
L_0006: ldloc.0
L_0007: ldstr "B"
L_000c: call string string::Concat(string, string)
L_0011: stloc.1
L_0012: ldstr "A"
L_0017: stloc.2
L_0018: ldloc.2
L_0019: ldstr "B"
L_001e: call string string::Concat(string, string)
L_0023: stloc.2
L_0024: ret