Pedro, bom dia.
Não sou o instrutor, mas vou tentar te ajudar. O pattern Chain Of Responsibility normalmente vão ter um alto acoplamento com a classe abstrata/interface, ou seja, se alterar alguma coisa lá como nome de metodo ou inserir alguma nova funcionalidade, a mesma deverá ser implementada nas outras classes que herdam dela.
Porem se você alterar alguma regra de negôcio dentro de cada classe que herda da classe abstrata, não irá impactar nada em seu codigo.
Agora sobre instanciar as classes, em todo quanto e lugar da programação você nunca irá ganhar 100%. Voltando ao inicio do projeto nos tinhamos diversos if's o que era muito verboso e dificil a manutenção conforme o crescimento do projeto. Quando você instancia as classes dentro da variavel, fica facil a manutenção e a legibilidade, ela vai crescer? Sim vai crescer conforme a sua regra de negôcio, porem muito mais facil a manutenção sendo apenas retirar uma classe que está sendo instanciada ficando com muito menos chance de essa alteração que você fizer quebrar o codigo.
Enfim, meu ponto de vista é que você nunca irá ganhar 100% alguma coisa sempre vai deixar a desejar. Mas é muito melhor do que fazer um monte if/else.