Hi @AlexG this is intentional, actually, but I wasn't sure why so I took a little dive into the commit history.
It was added here: https://github.com/NodeBB/NodeBB/commit/26d9cc56d30c6a0a3c75cd427f04c71a67fb592a 5 (!!) years ago, the reason being that I wanted to limit database clutter.
You see, notifications are created and purposely aren't cleaned up immediately, as read notifications still have some utility. Additionally, when a notification is created, it can be pushed to multiple users, so even if it is read by one recipient, it could be unread for many other users.
Additionally, some users are inactive and may never read a notification, so would that notification linger around the database forever?
I'm not a fan of database bloat, and notifications had the potential to really litter the database. Therefore, after a week, notifications are removed, both read and unread.
The logic really hasn't changed at all since it was initially added. We can opt to make this configurable, with different limits on read notifications and unread notifications, but I firmly believe notification pruning is necessary.