I had this issue too, and I think I have an intuition about what is causing it.
When playing downloaded media, the issue does happen if the device has an active internet connection, but does not happen in airplane mode. so, my intuition is that the player tries to “sync” itself to the “last played” playback position it receives from the server, but the server isn’t updating the playback position properly, and therefore gets “stuck” at an earlier point in the playback process (or jumps to the end if your % watched is close enough to the end where it would mark the media as “played”). This doesn’t happen in airplane mode because the server cannot be queried for playback status.
If I’m right, I don’t think there’s anything you can do here - looks like a(nother) iOS app bug we’d need to wait for the Plex team to resolve.