Problem seems to be setting the parent to the evaluated object, but the BONE_RELATIVE_PARENTING flag on the bone is set on the original object.
Thus in ob_parbone() which is called twice (once from ED_object_parent_set, once from depsgraph BKE_object_eval_parent) we have this inconsistency...
Working on a fix...
Evaluated data is to be evaluated by the dependency graph.
Solution which will follow the design is to modify original bone, tag object for update.
Seems like we are doing BKE_object_workob_calc_parent() / BKE_object_where_is_calc(depsgraph, scene, workob) before depsgraph evaluation has done its thing... (so flags are not correct there [yet])
Can do some more digging, but a bit out of ideas here I'm afraid...