Yes, you're right that the
<head> tag should not include anything that's actually shown on the page. It's for other information about the page. However, most web browsers are pretty forgiving when it comes to using correct syntax, and they are programmed to do their best to "guess" what the HTML coder meant. Given that, they will show things that are not in the body of the web page.
I think that this is really similar to what other teachers see in their classrooms, like English teachers having to insist on students correcting misplaced modifiers, even though kids think that it's obvious what they mean. We can also point out that we organize code so that it's easy for humans to understand, as well as computers.
One of the things I like about teaching programming is that we don't often need to be the "bad guy" in telling students that they did things incorrectly, but can instead let them figure it out for themselves when their programs don't run correctly. Still, we have to teach them that just because something works, or works in one situation, doesn't mean that they have met all the criteria for the project. Sometimes working code isn't enough, and they need to understand that, too.