Most relays are running strfry which has a max tags in the config. The default is 2000. I suppose there is no real theoretical limit but I would assume, most relays would have some sort of event size limit (like grain) or max tag values like strfry. Strfry also has a max size limit of 65536 bytes by default. All up to the relay operator.
its a setting in strfry, you can set to any size, which is then ultimately capped at 64kb