I feel that it has a couple of advantages.

One, it simplifies the constructor making it look cleaner and nicer to use. It also simplifies the structure so we have one less custom object and promotes better encapsulation. It also removed the anonymous inner class which have inherent references to their outter classes. In most cases these aren't a problem, the system is smart enough to garbage collect and you don't have to worry about a leak. If you require these they are normally fine to use and their really isn't anything wrong with them. But I feel if they are not required why allow a chance for a leak.