The session parameters are (or can be) governed and overwritten by the "client" (whether that is a query tool like Toad or SQL*Plus, or even the PPM app/bg services).
So I wouldn't put much stock into those values normally.
You're also correct that the values will 'flow' from database -> instance -> session unless overridden further down the chain.
However the scope at which a parameter is needed and used can vary and depends on when/how it's being called. That can mean there are times it wouldn't be enough to just set things at the instance level when it is also expected at the database level, and so the parameter scopes we document are set accordingly.
Examples that can impact when/how a parameter comes into play include:
1) It just being called as a query from a client
2) In the context of PPM, whether a user's locale/language settings would override some settings at the 'session' level, but some things that do not run in a user's context will depend on some consistency of setting being in place at the instance level (notably, nls_date_format).
3) Things that impact how and where they are stored physically, and the impact of optimally fetching and using that information, can trickle down to the db level settings (notably, sort and comp, if I am recalling correctly, and they are done in order to get the best scenario for the data we store and the order in which we typically want to get it).