Just have the relays do the mailboxes. The filter.nostr.wine already does, for up to 4 relays each.
Then clients don't need to do that and users can choose or not-choose that model (or combine it with some other), by adjusting their relays in the clients.
Like, I want mailboxes on theforest and thecitadel, but not on our private project relay.
Could also have mailboxes on your local device relays, too. Then you always just read and write from that.
Benefit of it being at relay level, is that you set it up once, and can use that relay in any client and the behavior is the same.