I figured out what's going on in my case. Maybe this is part of what you're seeing.
I'm watching videos on a client, which is properly connected to the library server with username/password.
When I finish a video, the client shows the new watched status correctly. But if I power off the client in less than 60 seconds after the video finishes, the server never gets the watched status updated from the client. The next time the client is turned on, the episode I just watched is shown as never watched, and the server shows it as never watched.
If I finish a video, and leave the client powered on, the server will update to show the status as watched about 1 minute after the video finishes. And then rebooting the client, the watched status will now stick.
So the workaround for this is to leave the client powered on for at least a minute after the last video finishes.
I think this could be a fix request, to have the client update the watched status to the server immediately, rather than wait a minute. Typically when I finish a video, I power off the client right away.