The web page designers are pushing the test onto the client so 1) there is immediate response as the user types it in and he can fix it if it truly is a mistake before moving on, and 2) it puts the computation onto the client and doesn't waste a PUT and their server's time with what may be invalid data.
I have had lengthy email exchanges with the support people at such websites, and it is always fun for them to tell me that "+" is not a valid character in an email address when they are happily conversing with someone who has a "+" in his email address. Obviously it is valid; obviously they are idiots.
Try using an e-mail address with @ in the local part...
Or having an e-mail address on a TLD, like hostmaster@museum.
It's not for the sender to decide what's valid. It should decide whether it's routeable, and leave it up to recipient to decide whether it's valid.
And it's certainly not up to a web page that isn't even the sender.
I'm also irritated with those who either capitalize or lowercase the local part. It's fine to do that with the remote part, but it's really up to the recipient server whether foo@bar, Foo@bar, FOO@bar and so on are different recipients.
(And while at it, don't mangle names either. MacKie is not the same name as Mackie.)