Oi Rafael, tudo bom?
A ideia é que sigamos a regra de negocio para modelar o sistema. Acredito que no exemplo do curso não haja essa abertura. Se na sua aplicação houver, você pode escrever o setter.
nesse caso como poderia ser feito a correção sem o setValor do CNPJ?
Uma possivel forma é utilizar o construtor e reconstruir a instancia com os mesmos valores (id, nome, etc) e o cnpj alterado. Outra forma é utilizar reflection para alterar esse atributo. Falando de boas práticas acredito que a segunda abordagem não seja a melhor.
De qualquer forma, é comum que um sistema mude ao longo do tempo e que um atributo que não tinha setter passe a ter pois a regra de negocio mudou. Isso não é um problema =)
Qualquer duvida é só falar.
Abraço e bons estudos.