The best teachers are the ones who had to learn the most. People who just "get it" are bad teachers because they didn't have to go through a process to understand.
I think, from a different perspective, teaching things can help you to understand them more deeply - so if there are areas they are still unclear on, the next set of students can help ask the right questions so they can learn.
I notice this myself when I'm teaching people things - in many cases I erroneously come off as "the expert" in things even when I mostly gained expertise in it by responding to the very questions that people are asking.
"Unconscious competence" is particularly rife in the functional programming community. An inability to explain does not necessarily mean you just "got it", but if you've understood it, you can't necessarily explain it.
That's an interesting observation. This hasn't been my experience. I think it may partially also just be misunderstanding, though. There are obviously more than just 2 groups of students: those that get it with no studying and those that struggle with the material.
I'll agree with you that the top part of the distribution that "just get it" are not going to be the best teachers. But, I doubt the bottom portion are either. Rather, students in the middle, who struggled to understand the material, but ultimately came to a good understanding are the best group.
Granted, I'm just speculating and leaning on my own experiences. So, I really am interested to hear otherwise.