I don't believe anyone should excess as it encourages fraud by people trying it on. I think my system that everyone is made to buy a new ticket, on the basis that it does not discriminate between the innocent and the fraudster, is fair.
The honest person, who made the mistake in the first place and is therefore liable to be treated as if they had no ticket, now has a means of getting some (or all) of the money back later - depending on whether there's an admin fee or not (I'd suggest there is a fee, or else you could just ask someone with a railcard to get refunds for you).
The person trying it on now has to pretend that they forgot it and pay the new price, on the basis they're going to be fine if they appeal within 28 days, but know that they're screwed.
The TM/RPI no longer needs to care who is telling the truth, and can just treat everyone the same (which is polite, but firm, not rude, arrogant and condescending). This also means there's no need for anyone to be embarrassed, as you'll know you're telling the truth and the TM/RPI has no reason to doubt you - they won't care.
The T&Cs for the railcard could explain how to make such a claim, with a note to say that you can only do x times in any year. Your railcard number should be logged to prevent multiple claims. If this is possible, you could then remove the admin fee as it stops one person acting to do multiple refunds for friends and family who will try it on all the time.
Any system must look at how people will seek to abuse it, and I accept that staff must assume everyone is trying it on - as so many people are. However, I have no doubt that you can then create systems to make it as easy as possible to help those who made an innocent mistake once or twice.