POW would be trivial for clients to implement in various places in the nostr protocol. Python-nostr and the bija client have live implementations of event ID POW. I agree that pay to play (sats instead of POW) seems cleaner, but there is something to be said for the accessibility of POW. Setting some static level of POW would effectively remove most mobile clients unless the work was delegated elsewhere.
The nice thing is that event-based POW is more easily delegated than public key POW since the private key isn’t needed for the hashing