True. But you can hide the default message and replace it with your own. You'll still benefit from the form validation.
You give the same error messages based on whatever custom validation and control the output.
Using the related pseudo classes :valid, :invalid, :required, :optional is nice, but until last year you still had to do custom logic there because :user-valid/:user-invalid weren't implemented outside of Firefox. That created additional work and was annoying.