TFL and THR use different options to determine what has been "read" and what hasn't.
Here at TFL it is time dependent as you said. After a certain period of time (I'm not sure how long it is) or after you have logged off, the assumption is made that you have read everything you wanted to. That's not always a good assumption obviously, but it is often desirable in that all the threads you are not interested in don't keep shouting at you (in the bold font) to read them. This is the scheme most often used in vBulletin forums.
At THR, each member has a data base listing of the threads they have read or not. It takes a lot more storage space, but the "read" state of the threads doesn't change until you actually open the thread or press one of the "Mark Forums Read" buttons (or double click on a single forum's icon which will mark it as read).
Different methods, and each has it's good points and bad points. For what it's worth, we had more complaints at THR when the "read" scheme was changed than we ever had there before or ever had here using the current method. For that reason, I haven't broached the subject here at TFL. We could use the data base method also, but it may not go over well.