When we implemented the logic in the handlers to lower the priority for events where the object didn't change, we did that with a wrapper as that can be re-used.
Unfortunately, this requires everyone to remember to use this wrapper, which is extremely easy to forget:
handler.WithLowPriorityWhenUnchanged(&handler.TypedEnqueueRequestForObject[*my.CRD]{})
We should instead implement this in the handlers themselves and default to true to avoid the need for this.