The trick is to not push expiring notes to relays that don’t support the nip. The vast majority of relays do because it’s baked in to the software, but some don’t. In my real world experience this works, relays drop it.
When it comes to delete, this is also the case. Even when the event has been pushed to a ton of relays, pushing the delete request out to all of those relays effectivily pulls it from the network. Sure there are maybe some relays that either hold a copy and don’t share it or refuse to delete, but in practice it’s working.
https://nostr-delete.vercel.app is your friend.
Some relays are going to keep copies offline, that’s a backup, that’s fine. It’s like taking a screenshot but with verification. As long as users can indicate that they’ve desired something to be deleted and most players honor that, it works. The mistake is when we think we need mathematical proof.