I think you almost answered your own question, indicating that yes, there is overhead with deserializing the objects, but I think that the real reason should be one of manageability and maintainability.
The size of the difference in storage will be minimal if you talk about 100 objects, but when you scale to 1000 objects, the differences will increase, especially if you use complex custom objects. If you have an application that has many users using 1000 sessions, you can imagine how it simply does not scale.
In addition, having many session objects, you will undoubtedly have to write more code to process each changing object. It may not be much more, but certainly more. It also potentially makes it difficult for the developer to collect code to understand your reasoning, etc. And therefore expand your code.
If you can handle a session in one barebones format, such as IEnumerable or IDictionary, then this, in my opinion, is preferable, even if there is a little overhead.
Digbyswift
source share