Confira a primeira resposta para /programming/4671610/why-use-string-format . Abrange tudo, na minha opinião, por que é melhor.
Além disso, cada assembly .NET possui um pool interno, contendo uma coleção de strings exclusivas. Quando seu código é compilado, todos os literais de seqüência de caracteres que você menciona no seu código são adicionados a esse pool. Se você tiver um código parecido com este:
"the int is " + i + " and the double is " + d
Isso torna duas cordas na piscina.
Se você tem:
"the int is {0} and the double is {1}"
Você tem apenas uma String no pool.
É um pouco mais complicado saber quando Strings são internadas e quando não são, porque o compilador possui alguma inteligência ao detectar Strings que talvez não precisem ser internadas algumas vezes ... Confira, por exemplo, este artigo que fornece mais informações sobre isso importam.
Edit: depois de desenterrar um pouco, encontrei uma resposta interessante para a pergunta Quando é melhor usar a concatenação String.Format vs string? . Em resumo, o autor da resposta com +30 votos apresenta um argumento convincente a favor da concatenação de String quando a localização não está envolvida.