Only paid relays are required to report such things, while free ones operate as-is and are not obligated to do anything.
Discussion
No one is obligated to do anything. But if they want to build a health relationship with their users, they better do. There is nothing worse then figuring out the relay you like is misleading you with hidden policies, regardless if its free or paid.
Healthy relationships mean not embedding base64 blobs into text notes. Users do not notify some relay owner that they will do this, so he may not notify them either. We don't have a system of contracts and obligations here.
Correct. But users can still hate you if you are hiding posts form them. This has happened many times in Nostr in the past and it is never good for the reputation of the relay operator.
All relay implementations have event kind filtering, and max event sizes with reasonable defaults, 65k for strfry or 128k nostr-rs for example. Those are there to stop misuses just such as this. If this data gets truncated or rejected because you're (IMO irresponsibly) shoving data into a kind 1.... That's not on me.
I don't see how this experience isn't janky in the best case for users.
Error messages are enough. If the user doesn't read them, well... 🙄
Error messages are not hidden. Many of these policies are never communicated, not even in error messages. That's when people get angry and the operator's reputation goes to the trash.
Communication goes a LONG way towards user experience. If you're running a service, tell your users what they can and can't do. Relying on non technical people to figure out what they're able to do is a bad user experience. Nostr benefits as a whole when users have better experiences.