@maxrice some errors you can really change.
Example: https://github.com/woothemes/woocommerce/blob/master/includes/wc-customer-functions.php#L51-L53

This type of validation I would do in the API, but as I have in the function, I let it go.

Only this error deserved the 500 status:
https://github.com/woothemes/woocommerce/blob/master/includes/wc-customer-functions.php#L107-L111
But I believe the status 400 resolves for now.