O Singleton possibilita que o usuário crie uma instância global para determinado objeto. Isso pode ser interessante, mas tem problemas similares ao de variáveis globais [Quais problemas são estes ?] no mundo procedural, afinal o objeto é único e disponível para todos. Se não usar com parcimônia, o seu código sofrerá problemas de manutenção [Quais problemas são estes ?].