Properties (bpy.props) don't update with keyframes and drivers?
This issue has been brought up to the developers in a bug report https://developer.blender.org/T63793
It is a known limitation.
The reply from Dr Stüvel from the developers team :

The issue is that an object is not &quot;tagged for update&quot; in the
dependency graph when a custom property is changed by Python. &quot;Tagged
for update&quot; means that Blender understands that the object (and
everything that depends on it) should be updated. This is done for a
few reasons:
Tagging the object for update requires a reference to that object.
This is available for simple cases like some_ob[&quot;prop&quot;], but not for
nested cases like some_ob[&quot;complex_prop&quot;][3][&quot;something&quot;]. Updating
an object could mean recalculating its constraints and modifiers,
which can be expensive. This may not even be necessary for that
particular custom property, but when exactly this is or is not
necessary can be hard to determine. As a result, this could make
Blender slower than necessary.
After setting the custom property, call C.object.update_tag(). This
should take care of the updates not &quot;being seen&quot; by dependencies. It
won't trigger a full redraw of Blender's UI, though, so until that
happens things on screen may still show the old status.

So it might work on bpy.types.Object blender objects, but I don't see how to use it in property groups or in objects which have a number of dependencies.
I found that like you pointed in the comments, the set callback of the custom property is rightfully triggered, but not the update one. This is however a bit limiting since the set callback doesn't carry over the current context which may be necessary to have in the following update logic.