Oi Elias, tudo bom?
A sua primeira conclusão está correta, como utilizamos o querySelector para nos retornar uma lista com as tags TR e adicionamos um eventListener para cada, as novas inclusões através do formulário não terão esse "escutador" atrelado a elas, uma vez que o código da sua página não re-executado a cada inserção.
Concluindo, a iteração por essa lista adicionando os "escutadores" ocorre apenas uma vez, durante o carregamento da sua página.
Agora, no seu segundo ponto, temos algo um pouco diferente. No javascript temos um comportamento dos eventos que chamamos de event bubbling.
Event Bubbling
Todo evento tende a "borbulhar" pelas tags do seu documento, até que o mesmo "saia" do documento pela tag html. Imagine um copo de refrigerante sendo seu documento e as bolhas sendo os eventos. Os eventos vão subindo na hierarquia até "deixarem o documento pelo topo"
Então vamos lá, vamos imaginar o seguinte cenário:
<div id="1">
<div id="2">
<div id ="3">
</div>
</div>
</div>
No exemplo acima, temos 3 divs aninhadas, vamos usá-las para simular esse event bubbling.
Nesse cenário, se eu disparo algum evento (click por exemplo), na div com id 3 , esse evento borbulhará pela div 2 e depois pela div 1.
Se eu disparo algum evento na div 2, esse evento borbulhará apenas pela div 1,
Agora se eu disparo esse evento na div 1, só ela saberá da ocorrência desse evento.
Qual a conclusão podemos tirar desse fato?
Então, eventos disparados em elementos mais internos, são "escutados" pelos elementos mais acima no nível hierarquico!
Agora sabemos que além do próprio elemento que sofre a ação, os pais também podem ouvir esses eventos.
Após toda essa explicação (espero que não tenha ficado cansativa <3) vamos para o seu cenário.
Sabemos que nessa tag table estarão todos os pacientes listados e além disso, nós sabemos que eventos que ocorrem dentro dessa table, nos seus filhos, ela também escutará.
Com essa ideia em mente e sabendo do event bubbling eu posso adicionar um escutado de evento nessa tag mais externa e quando esse evento ocorrer eu executo a lógica no alvo dessa ação (event.target)!
A diferença não é que o dom foi atualizado, ele realmente foi, mas a sacada é que quem está escutando o evento agora é a table! Então mesmo que esse elemento seja inserido depois, a table saberá lidar com essa ação!
Um ponto interessante de se falar também é que podemos adicionar esse EventListener antes de colocarmos o elemento criado dentro da tag, tendo um EventListener por tr paciente. Porém é de facil percepção que essa não é uma implementação escalável, imagine se esse número de pacientes cresce absurdamente, teremos milhares de eventListeners!!!
Então, eu como desenvolvedor quero um código fácil de dar manutenção e além disso, quero que ele rode na velocidade da luz! Por isso a decisão de DELEGAR esse evento para a table, tendo apenas 1 escutador, isso é o que chamamos de delegação de eventos.
Elías, sei que escrevi muito mas prefiro dar informações completas hahahah
No mais, espero ter ajudado na sua jornada.
Um grande abraço e bons estudos!