If you create an advancement with criteria that has one trigger, an "enter_block" trigger with no extra data, that has a command reward where it revokes itself, it will execute more than 20 times per second (multiple times per tick).
It detect the block the player is in both on their head and feet, triggering the advancement once for each. Also, when a player is between two blocks, it will trigger the advancement FOUR times, once for their head and feed on each block. This can be increased to 8 times, and even 12 times when in the air or standing on a slab. This means the commands run 240 times per second, rather than 20.
This breaks down systems that rely on advancements to trigger 20 times per second without external command blocks, as the clock speed will fluctuate as the player moves around and enters different amounts of blocks at once.
Steps to recreate
1. Put the main.json file into a folder called 'test' in the data/advancements folder
2. Open world
3. Place down repeating command block with say command in it, and set to always active (to see what 20 tps looks like)
4. Observe how the amount of messages from the advancement between the 20 tps command block is always larger than 1, and changes as you move around