I’ll oversimplify some things for the sake of brevity
and because I believe that there is no need for more detail and accuracy
for the topic that we are discussing.
In the case of JWS the key should be used by the web service/issuer to validate that the tokens that receives
back from the client are the one that were issued by it originally.
This may work as an alternative to the traditional sessions. The server however do not
have the task of maintaining the table of active sessions. It just has to validate the token and
check the expiration date to see if it is valid.
In case we are talking about multiple web services that are communicating
together, all may follow the previous procedure and in practice "share the user session".
Also, the token may contain (not sensitive) information that is accessed often by the server
in order to avoid making pricey calls to the db.
Of course the token may contain information that is required by the client too.
However, storing too many information in the JWT introduces a
bandwidth overhead, as the JWT has to be included in all the requests
made by the client.