First,The main purpose of inner class as the name implies.,ie., not to have as a seperate class.
There may be situations where you need a helper sort of class which is very specific for a single class.In that case it may not be very good to have a seperate-independent class and give it a big figure. Instead embedd the class within the class that requires the innerclass' functionality.
The main advantage is the inner class can share a intimate relationship with the outer class.(it can access its private variables)