Informações potencialmente relevantes do link do techie007:
When the solution is saved or closed, the environment calls the SavePackageSolutionProps method with a pointer to the SaveUserOptions method. An IStream containing the binary information to be saved is passed to the WriteUserOptions method, which then writes the information to the .suo file and calls the SaveUserOptions method again to see if there is another stream of information to write to the .suo file.
These two methods, SaveUserOptions and WriteUserOptions, are called recursively for each stream of information to be saved to the .suo file, passing in the pointer to IVsSolutionPersistence. They are called recursively to allow for the writing of multiple streams to the .suo file. In that way, user information is persisted with the solution and is guaranteed to be there the next time the solution is opened.