Em relação ao Facade, vejo muita gente desestimulando o uso desse padrão. Mas quando penso em desenvolvimento de qualquer aplicação , sempre vejo que tudo é uma fachada que esconde um monte de complexidade para dentro da aplicação. Até ai me parece que todo software é um conjunto de Facades.
Agora olhando no detalhe do código ou de alguma implementação prática do pattern novamente vejo o Facade como uma forma de ocultar as complexidades da implementação e permite que um desenvolvedor menos experiente utilize algum método estático e que acredite que o que está sendo feito por trás está fazendo certo.
As minha questões são: essas não são as propostas de qualquer Framework ou lib? Até mesmo o Doctrine não faz isso?
Você citou o Laravel no curso. Particularmente não uso, mas escuto falar da galera, que a proposta dele é facilitar e acelerar o desenvolvimento e talvez seja ocultando as complexidades. Mas de novo, em diferentes medidas, não é isso que tudo framework tenta fazer no final das contas?
Não será uma questão de nomenclatura? Alguns dão o nome de Facade (FazAlgumaCoisaFacade.php) e outros não?
Concordo com você que o fato de instanciar outras classes dentro pode ser um erro, mas como sempre, essa é uma decisão do desenvolvedor. E se fosse uma dependencia injetada, não seria mais um Facade?
Depois dessas refelexões acima, me inclino a pensar que dizer que Facede é um padrão, resulta meio redundante, pois tudo termina mais ou menos na mesma intenção: implementar uma fachada para um sistema complexo por trás.
A questão das boas ou más implementações, acredito que se resolva com princípios SOLID e outras boas práticas de desenvolvimento. Não acha?