Passing variables in IntProperty constructors ignores changes in the variable when creating more instances using CollectionProperty.add()?
While more of a workaround than a solution, for now I fell back to using ID Properties. 

I append a function to bpy.app.handlers.depsgraph_update_post, in which I grab all the properties I'm interested in and compare them to a previously saved copy of them that's stored in a list ID property. If they match, I do nothing, if they differ, I save the current properties to the list and run my update(). 

This is probably not very optimized, so I won't be accepting this as an answer, in case someone posts a better way.