If we're adding triggers at the code level all over the place by overloading the store method we need to never ever let dbic handle it.. by allowing the 'update' method through we are exposing ourselves to places in the codebase skipping the store triggers.
Indeed, I think we should fix it at Koha::Object level (once again), but on top of bug 21610.
We could move the handle of default values to a specific (private) method and call it with get_dirty_columns on ->store, ->update or ->set.
We should replace the remaining DBIx code fragments scattered here and there..
I agree we should either remove it from AUTOLOAD or write our own as a wrapper on top of the class's ->store.