Other than because session storage is session-global to more than one page, why would you ever want to use the viewstate to hold values?
It seems kind of ridiculous
Not an answer to your question but one of your assumptions is incorrect.
Session IDs can be passed in the URL. Session does not require cookies.
http://msdn.microsoft.com/en-us/library/aa479314.aspx
<sessionState cookieless="true" />
For example when your application might be running in a computer farm and you can't configure session to use sql server.( Or using sql server is too much of a performance hit)