Я лично предпочитаю вариант 3 («Написать метод расширения HtmlHelper»), потому что эти части кода легко поддаются тестированию на модуле.
Мне бы очень хотелось, чтобы методы расширения могли быть размещены во внутренних или вложенных классах, потому что вы правы, вы начнете загрязнять свои пространства имен тоннами методов расширения, которые используются только в одном представлении.
Я бы рекомендовал изолировать эти методы расширения HtmlHelper в статических классах в настраиваемом пространстве имен для View , на которое вы вручную ссылаетесь в View, чтобы ограничить количество методов расширения, доступных в вашем проекте.