What is a less ambiguous word for "confuse" in context of describing two similar things?
Although one of the meanings of confuse fits your sentence, the word is ambiguous in this case and I wouldn't recommend using it (what I guess you already know, since you asked this question).
For one, I'd like to point out for you to realize that you can simply skip that part altogether and end up with:
John is never able to tell the twins apart.
What more do you need? Nothing, really. But if you feel like you do, I'd recommend:
John always mistakes the twins for one another and is never able to tell them apart.
You could say:
John always mixes up the twins and is never able to tell them apart.
How about distinguish, as in
John fails to distinguish the twins, and so is never able to tell them apart
or
John cannot distinguish the twins, and so is never able to tell them apart