Can you tell me which FMS build you are using and what file you are using? Especially codec details and how closed captioning data is present in the file, is it present in the Video data or as a separate track in Data messages.

Does HDS unencrypted plays fine with closed captions?

I need this information to understand your workflow clearly which can help me to diagnose the problem better.

In case of RTMP you are not observing this because RTMP seek is fast as the server sends some data immediately when we seek irrespective of the keyframe and the player starts playing it so it is in sync.

But in case of HDS we have fragments which are downloaded by the player and it has keyframes in it which can be positioned anywhere in the fragment. So, when you seek you get the current time but this might not be same with the time when the player actually starts playing the fragment as it looks for the keyframe. So, sometimes it can be the case that it got the keyframe immediately when it seeked but tsometimes not.