Я думаю с string.Format() этим легче увидеть, каким именно будет результат (так что у вас нет проблем с забытыми пробелами или чем-то в этом роде), а также легче набирать и изменять.
Если вы хотите сделать очень простое форматирование, использование +оператора плюс может быть проще, но я склонен использовать его только при объединении двух строк, не более.
Чтобы показать, как string.Format()проще изменить, представьте, что вы хотите добавить точку в конце предложения в своем примере: переход от string.Format("The int is {0}", i)до string.Format("The int is {0}.", i)- это всего лишь один символ. Но переход от "the int is " + iк "the int is " + i + '.'намного больше.
Еще одним преимуществом string.Format()является то, что он позволяет легко указать формат для использования, например string.Format("The int is 0x{0:X}.", i). Это еще важнее при форматировании даты.
Что касается эффективности, то string.Format(), скорее всего, она медленнее простых конкатенаций строк. Но код, подобный этому, скорее всего, не на горячем пути, так что это не имеет значения. И если это произойдет, вы, вероятно, лучше использовать StringBuilder.