Что ж, принцип, лежащий в основе концепции избегания литералов, - это удобство обслуживания. Так что спросите себя, каковы последствия ремонтопригодности каждого решения.
В этом случае меняется с
paragraphList = root.SelectNodes("paragraph");
до
paragraphList = root.SelectNodes(PARAGRAPH_TAG);
не создает проблемы с читабельностью. Таким образом, вопрос сводится к лени и сколько мест вы используете каждый строковый литерал.
То, что я, вероятно, сделал бы (предполагая, что вы касаетесь только кода), это сначала используйте строковые литералы, но как только у вас появится второе использование любой данной строки, превратите ее в константу.
Опять же, если вы используете плагин ReSharper для Visual Studio, вы можете использовать рефакторинг «Ввести поле» с простой комбинацией клавиш, чтобы лень не весила так много :-)