Olá Thales, tudo bem com você?
Em relação a primeira dúvida, para caso outras pessoas também tenham, é devido as configurações no persistence.xml:
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
A primeira para habilitar o log e o segundo para formatar
Agora a questão de isolar o EntityManager, realmente é a melhor prática, alguns frameworks inclusive abstraem um pouco essa questão, mas o ponto é que temos uma tendência a isolar o contato com o banco de dados, então é comum termos uma classe ProdutoDAO ou ProdutoRepository, por exemplo, que fica responsável por ter o EntityManager e dessa forma isolamos não apenas ele, como toda comunicação entre nossa aplicação e o BD
A abordagem do instrutor é mais de exemplificação dos diversos conceitos da JPA, por isso ele acaba fazendo esse ctrl + c / ctrl + v da criação do Entity Manager, o ponto positivo é que no final o aluno acaba com um código cheio de exemplos para que estudando posteriormente possa testar tudo novamente e entender de fato aquele conceito ( transient, commit, persist), então o código final produzido não se assemelha a um código de sistema
Agora nos cursos de Spring Boot, ai sim temos um código de uma aplicação, e fica claro para a gente como isolamos cada parte :)
Abraços e Bons Estudos!