Penso che con string.Format() sia più facile vedere quale sarà esattamente il risultato (quindi non hai problemi con gli spazi dimenticati o qualcosa del genere), ed è anche più facile da digitare e modificare.
Se vuoi fare una formattazione molto semplice, usare l'operatore + plus potrebbe essere più semplice, ma io tendo ad usarlo solo quando concatenando due stringhe, non di più.
Per mostrare come string.Format() è più facile da modificare, considera che volevi aggiungere un punto alla fine della frase nell'esempio: passando da string.Format("The int is {0}", i) a string.Format("The int is {0}.", i) è solo un carattere. Ma passare da "the int is " + i a "the int is " + i + '.' è molto di più.
Un altro vantaggio di string.Format() è che ti consente di specificare facilmente il formato da utilizzare, ad esempio string.Format("The int is 0x{0:X}.", i) . Questo è ancora più importante quando si formatta la data.
Per quanto riguarda l'efficienza, string.Format() è molto probabilmente più lento di semplici concatenazioni di stringhe. Ma il codice come questo è molto probabilmente non su un percorso caldo, quindi non importa. E se lo fa, probabilmente stai meglio usando StringBuilder .