Não seria correto eu retirar o textContent = "Peso Invalido!" e "Altura Inválida!" da função if ? Afinal a mensagem que vai prevalecer é o textContent = "Altura e/ou peso inválidos!" que colocamos na função else. Correto?
if (altura <= 0 || altura >= 3){
tdImc.textContent = "Altura Inválida";
alturaEhValida = false;
paciente.classList.add("paciente-invalido");
}
if (alturaEhValida && pesoEhValido) {
var imc = peso / (altura * altura);
tdImc.textContent = imc.toFixed(2);
} else {
tdImc.textContent = "Altura e/ou peso inválidos!"
}