Я понимаю пункт про усложнение тестирования, потому что такой контроллер сложно замокать.. а остальные пункты о чем?
Синглтон будет влиять на свое статичное поле и в любой момент захочет сделать его null. А потом кто-то будет к нему обращаться. Что будем делать?
Класс-контроллер должен быть открыт ряду других контроллеров, но для остальных закрыт. Используем DI. Зачем здесь синглтон?