Well, the wrapper classes enable you to treat the primitive types as objects and automatically convert between the two using a process known as boxing/unboxing.
Without them, you wouldn't be able to pass the primitive types to methods which expect an object as a parameter. This is particularly useful in the collection classes.
As Java doesn't support the passing of parameters by reference, you also wouldn't be able to write stuff like 'swap' methods for the primitive types. This isn't a problem with an object as it's the object's address which gets copied, not its value, when it's passed as a parameter to a method. Consequently, the method has access to the address of the objects and can easily swap their values.
Finally, the wrapper classes contain a number of useful constants and methods which would otherwise not be available to the primitive types themselves.