My suggestion here is to add a new advancement trigger called scoreboard_changed.
Basically this advancement would trigger for a player whenever a change to one of that player's scoreboard value for any scoreboard objective occurs.
In a similar manner to say inventory_changed, scoreboard_changed would have conditions so you can set exactly what objectives should have changed in order to trigger the advancement, as well as what score it should be set to.
This advancement would trigger once the player's score for zombie_kills becomes at least 10, skeleton_kills becomes at most 5, and creeper_kills becomes between 1 and 3.
Why should this be added?
It is technically already possible to create advancements that require you to say "Get 10 zombie kills," using either a gameloopfunction to run a command such as /execute @a[score_zombie_kills_min=10] ~ ~ ~ /advancement grant @s only my_advancements:kill/zombies_10 (which is too inefficient and would get laggy if you have lots of advancements like this) or some fancy function wizardry to have a hidden advancement where you have a "kill one zombie" advancement that does not show up anywhere and when you get this advancement it increments a scoreboard by 1 and then tests to see if you've actually reached 10 kills and if you have, grants you the 10 kills advancement (and then revokes the "kill one zombie" advancement so you can keep going)... except the fancy function wizardry can be a bit tricky too.
So adding a special trigger for scoreboard objectives would make these sorts of advancements easier to implement and also more efficient. It would also be very useful for mapmaking.