Agree with Beckee, this:
He's been in the same classroom with the same kids for 2 years for the most part and still doesn't know all of their names when he sees them in outside contexts.
sounds very much like prosopagnosia (I have it) and if he has it, it may really help him to know that he's different from other people in this regard, and that it has a name, so that he can tell people if he likes and develop strategies to handle it.
The key thing about prosopagnosia is that someone with it doesn't have the sense of familiarity, when they see the face of someone they know, that most people have. It isn't prosopagnosia if you sense that you know someone but can't recall their name. Not recognising people out of context is a classic sign, because if you're expecting to know someone you can use your intelligence to work out who it is, but if there's no reason to think that you'll know this person at all, and you don't have that familiarity signal, you have no reason to perform the "search" for the person's identity. I failed to recognise my DH out of context the other day, although admittedly that surprised me!