It seems to me that, unless this evaluation is totally wrong, this charity should just use bitcoin.
That's not the way it works. The "reveal" does not reveal which transaction it is, it reveals that they were involved in a transaction (this we could deduce already) and the exact amount (ie. let's ignore spurious outputs / change outputs), so it's not the same as revealing the one-time private key for a transaction. What we're talking about is a reveal that is no different to a screenshot of a person transacting (as has been posted in this thread) that contains full details of their transaction (destination address, amount, mixin count, payment ID). How exactly would you prevent that information from being revealed? You can't.
Monero is meant to solve that exact problem - what happens if we know the address of the recipient? Can we do anything with it? It's a stealth address, so good luck getting anything out of that. Ring signatures are an additional layer on top of that, and they exist to protect you when a transaction is compromised. They're a level of ambiguity, not a level of anonymity. Privacy is accorded by the stealth addresses, ambiguity gives you plausible deniability in the event that someone else in in the signature group for a particular input is compromised.
Edit: just to add, this stuff is inherent in the protocol. We're not suggesting changes, we're telling you what is already there. Reading the whitepaper is probably a good starting point to understanding why this exists in the protocol:)