What exactly is going on is still a bit of a mystery. When a script is run, the time of the .ab and the .abc are compared and when the latter is older or does not yet exist, the script is compiled, an .abc is generated and run.
When an update is published, modified scripts are supposed to be younger than the now obsolete .abc on a user's system and so should be recompiled when attempting to run them but sometimes this does not happen, resulting in the user not seeing updates or bugfixes to such a script. Somehow the detection of the .abc being older than the .ab does not work.
A solution would be deleting every .abc once after an update, this would ensure all scripts getting compiled to their latest version but some scripts take some time to do that so it's not perfect and it's only needed for recently updated scripts.
What i do now is once after an update, make the time gap a little bigger by scanning all scripts and deleting every .abc that is 10 days or less older than it's corresponding .ab, forcing it to be recompiled.
I'm not sure it is the final solution but in this case it worked.