Let's say you have a business class that can get loaded from the database or from form input. You don't want the validation to occur on database load. Or you might have logic in the validation that does things to the business object based on other input, and you don't want that happening at database load either.
A real life example: we have a user bridging application that loads the user (if it exists) from the database, then overwrites that default data with anything that may be sent from the form POST. There's a lot of validation that gets applied to the form POST data (such as defaulting a field if another one isn't present, etc) that shouldn't be applied if the data is loaded from the database.
Another example would be a wizard interface, where you only want part of the validation applied incrementally at each step.
There are other ways to do this, such as a subclass that applies the validation, but you only get one subclass in Java. Validators abstract the validation step out (as a Strategy pattern, if you're into that sort of thing) out the business object so you can pick which validation strategy you need at any point in time.