Lo ammetto, molto spesso uso String.Format (nelle sue varie forme). Lo uso principalmente perche' e' comodo, perche' il codice risulta piu' leggibile, perche' la stringa puo' provenire da una risorsa ecc. ecc.
Ma se vogliamo scrivere codice estremamente performante string.Format non e' certamente la forma piu' efficiente, anzi! Il blog di Rico (un po' vecchiotto ma sempre attuale) spiega il perche': http://blogs.msdn.com/ricom/archive/2004/03/12/performance-quiz-1-of-a-series.aspx