I have never found a good solution to the trade-off of protection against brute-force vs availability.
If I disallow X requests per second then I might enable DOS attacks on a user.
What if a cluster of zombie machines around the world is attempting to log in as a politician to gmail at their publicly known address? How would the politician ever get in, if login attempts are rate limited?