Also, I think the point of using the description_hash instead of the description is for descriptions that are too big. You just put a fixed-size description hash in the invoice, and transport the description itself via another method (nostr message, avian carrier, etc.).
Currently, per the spec, you MUST pass it to the payer because the payer MUST verify that hash(description) = description(hash). That's why I thing transforming those MUSTs into SHOULDs would be the least bad idea for everyone's sanity.