The issue was that the object_is_geometry method was used in two different contexts that expected the function to behave differently.
- Check if a "real" object can contain a geometry to check if it has to be tagged for sync after an update.
- Check if an object/instance actually is a geometry that cycles can work with.
I created a new object_can_have_geometry method for the first use case, instead of trying to adapt the existing object_is_geometry method to serve both uses.
Additionally, I changed it so that a BObjectInfo is passed into object_is_geometry to make it more explicit when this method is supposed to be used.