Apesar do innerHTML ser muito rápido, se os dados fossem gigantes não seria tão rápido do que adicionar cada tr em separado. No entanto, se os dados fossem gigantes o mais correto seria realizar paginação. Nesse caso, com uma quantidade de dados previsíveis o innerHTML daria conta do recado.
Na primeira versão do curso eu coloquei virtual DOM e utilizava a mesma estratégia do React. No entanto o curso começou a sair do foco de ensinar ES6 para como criar uma lib de diff e o nível de dificuldade para os alunos foi lá nas alturas.
Por fim, a solução usada funciona, mas é mais para que o aluno entenda sobre es6 e boas práticas do que ele criar seu próprio framework.
Consegui tirar sua dúvida ? Qualquer coisa grite ;)