Вопрос касался производительности, однако в названии просто написано «против», поэтому я чувствую, что нужно добавить еще несколько пунктов, хотя некоторые из них являются самоуверенными.
Исходя из этого, я решил придерживаться string.Format
большей части своего кода. Однако я подготовил метод расширения, чтобы иметь более плавный способ кодирования, который мне нравится больше. Реализация расширения однострочная, и при использовании она выглядит просто так.
var myErrorMessage = "Value must be less than {0:0.00} for field {1}".FormatWith(maximum, fieldName);
Не поймите меня неправильно, интерполяция - отличная функция. Но IMO он лучше всего проявляет на тех языках, в которых отсутствует string.Format
-подобная функция, например JavaScript.