One of the reasons because tokens are used is scalability.
If you made a request to the Identity Provider for a request coming to your resource, you would pay a price:
- network delay
- computational overhead of the Identity Provider
Tokens are conceived to be self-contained, to avoid this round-trip and to distribute the computational overhead. To achieve this, tokens must be without state. Tokens are valid until they expire and deleting a token doesn't mean revoking its validity.
You might manage somehow the mechanism to revoke tokens but this would give up to the statefulness and would re-introduce the need of a communication mechanism such as a distributed cache or a database and the problems that this would entail:
- network traffic
- overhead for each single request
- memory/disk contention
The lack of logout with token is one of the drawbacks we have to accept to make systems more scalable.