Я бы сказал, что это зависит от того, что вам удобнее, так как оба варианта 1 и 2 жизнеспособны. Люди скажут, что вариант 1 хорош, так как вы можете использовать XmlWriter, чтобы убедиться, что вы получили верный xml, и люди скажут, что вариант 2 действителен, поскольку mvc полностью контролирует то, что отображается в вашем представлении ( который может быть xml).
Однако я бы лично предложил вариант 1, чтобы сохранить функциональность независимой от контроллера и использовать ее в качестве автономного служебного метода, который принимает данные и выводит xml. Это будет проще для тестирования, но также будет доступно для вызова из других мест в вашем коде, если это потребуется в будущем. В дополнение к этому он также сохраняет код в вашем контроллере чище.
И я согласен с Марком, я не думаю, что вариант 3 - это хороший путь.
Это только мои мысли, надеюсь, это поможет: -)