Loading the roster is an asynchronous task. It is triggered when getInstanceFor() is called, but may not be finished when it’s returned.
I plan to change that behavior in Smack 4.2, so that the new roster returned by getInstanceFor() is loaded if the connection was authenticated: SMACK-663