All the Employee (assuming they’re not a casual employee) has to say is “Prove it. Prove I said these things of which I am accused of saying” and the company doesn’t have a legal leg to stand on wrt to firing them, unless there’s a repeated pattern of that sort of thing (“Mr. Smith, this is the third alleged incident in which a customer has accused you of making homophobic remarks to them…”)
Let’s pretend that all that happens to this employee is that they Get A Jolly Good Talking To from HR. What has that actually achieved from the aggrieved person’s POV? The person making the undesired comments isn’t going to say “Hallelujah, I have seen the light! I shall embrace my Queer fellow humans and share love, kittens, and unlimited tolerance for all and sundry!” No, they’re going to make a note not to share their views with anyone not considered a good friend, and then go to the pub and complain to their (likely sympathetic mates) that some “Drama Queen” took an attempt at humour* way out of context proportion and got them written up over it.
It’s worse if they get fired, because then the employee is going to blame Gay people for “over-reacting” and getting them fired. That’s only going to compound their dislike of Gays, not cause them to realise they might have had some outdated or possibly even offensive** ideas about sexuality.
In short, getting the employee written up or fired isn’t “teaching anyone a lesson” or “striking a blow for Gay Rights” or “sending a message about Tolerance”, it’s adding more fuel to the “Negative Gay People Stereotype” list.
What does it achaive? Beside the fact that you don’t have to hear about it from that person at that store again, which can just as easily be achieved by not making a song and dance about it and just going to a different store. Getting someone fired in this economy for not thinking your sexuality is just the greatest and most wonderful thing in the Universe is far, far worse IMHO than someone misjudging their audience and assuming that a straight male would not want to be mistaken for a homosexual.
Let’s be realistic- what’s the harm that the OP has suffered? Hurt feelings, a bit of awkwardness? Nothing especially serious or life-ruining, in other words. And the reasonable and fair response to that is to put some guy out of a job, so he can’t pay his rent or put food on his table? No wonder some people are against gay marriage.***
A simple statement to the salesperson that “You know, I’m Gay” and leaving it at that would have almost certainly been enough to embarrass them into keeping their mouth shut in future but without turning the whole thing into a Big Issue.
*Or however they try and spin it
**To some people
***I’m not one of them, believe it or not.