I noticed that the subtitleTrack field on the video node doesn't get populated by default, even if the global caption settings are set to "On". I threw this conditional in and captions are now displaying consistently:
if video_player.availableSubtitleTracks.count() > 0 then
video_player.subtitleTrack = video_player.availableSubtitleTracks[0].TrackName
end if