That expression explains the inconsistency.
Right now you’re doing:
employmentNav.results[-1:] → take the last employment in the array (assuming the API always returns them sorted)
jobInfoNav.results[0] → take the first jobInfo for that employment
In rehire / concurrent employment scenarios, jobInfoNav.results is often not consistently ordered (and can differ per user/tenant), so results[0] can end up pointing to an older jobInfo record for some users.
A simple fix is to also take the last jobInfo record instead of the first, e.g.:
"$.employmentNav.results[-1:].jobInfoNav.results[-1:].departmentNav.name_localized"
That usually aligns better with “most recent record”.
Also worth checking: employmentNav.results[-1:] has the same assumption about ordering. If the employments aren’t returned in a reliable order, you can still pick the wrong employment. The fastest way to confirm is to look at the provisioning logs / EC OData payload for an affected user and verify the order of employmentNav.results and jobInfoNav.results (effective dates, active flags, etc.).