When you learn English mainly from written sources with little speaking practice (and I was an extreme example of that), you end up composing written English sentences in your head and reading them aloud when speaking (or just writing them down directly when typing). This makes your pronunciation awful and your speaking stilted and unnatural, but on the other hand, your mind categorizes differently spelled homophones as completely different entities, so there is almost zero chance of mixing them up.
In contrast, if you're a native speaker or otherwise a truly fluent speaker, you compose natural spoken English in your head and, so to say, dictate it to yourself when writing. This makes it easy to confuse homophones, since your mind emits words encoded as audial, not textual information, and you have to disambiguate spelling on the fly based on the context.
This is of course a simplified picture, but still a more or less correct one in my experience. And as your spoken English gets better, you start gradually moving from the first category to the second.
Yes, this seems plausible, and it gives a fascinating insight, for me, into how other people process language. I've been noticing lately how frequent wrong homophones are in writing; in fact I just encountered one--are for our--in a textbook I'm currently working through (Lawvere & Schanuel's Conceptual Mathematics). This is a type of mistake I can't imagine myself making. But if, for many people, the textual encoding is not maintained, in parallel with the audial, when spoken competence increases past some threshold, the phenomenon is explained.
What can be done to help correct this bug?
There's been a recent heavily upvoted and profusely commented post about things people want to learn. It's close to having so many comments in a single day that it should probably have a part 2.
However, the subject seems to inspire thoughts about what *other* people ought to know, and while that's got a good bit of overlap, it's emotionally rather different.
So, what do you think other people ought to know? Any theories about why they haven't learned it already? Any experience with getting someone else to learn something when it started out as your project rather than theirs, especially if the other person was an adult?