Qual a real motivação em se usar o Collections.unmodifiableList no nosso getAulas() ? Pelo que eu entendi isso restringe o acesso direto pelo javaColecoes ou qualquer outra referência que tivéssemos.
Mas dessa forma não podemos mais usar os métodos prontos de List e precisamos criar os nossos próprios, como o adiciona que foi feito no curso. Se quiséssemos usar outros métodos, também precisaríamos criar eles de novo.
Então qual a forte, e real motivação, em usar esse tempo escrevendo métodos que já existem? É uma questão de boas práticas e design?
Ainda: o nosso List<Aula> aulas = javaColecoes.getAulas(); agora estaria servindo apenas para conseguir "ler" a lista, correto? Então ele pode ser substituído simplesmente por System.out.println(javaColecoes.getAulas()); ?