Oyster system is fundamentally limited by its use of stored values on the physical cards, making it hard for the system to correctly issues retroactive refunds. TfL does its best to automate this, if you regularly use the same station, buts it’s an imperfect system.
TfL have long acknowledged the issue with railcards, and not supporting them on contactless is hardly “by design”. It’s substantially harder to support railcards, and perform correct enforcement of them, with contactless cards. There’s no way of meaningfully marking a contactless card as being paired with a railcard, which would allow ticket inspectors to actually know that when performing enforcement. It would be come trivial for people to defraud TfL using railcards, if there was no mechanism for allowing spot checks on people travelling.
To make the argument that not supporting railcards is “by design”, you also need to explain why TfL accept railcards on the Oyster system. TfL are under no obligation whatsoever to support national railcards. So if the lack of support for railcards on contactless was a revenue maximisation choice, why don’t they just get rid of the railcard discount entirely?