Fun fact! Advancement files can run functions--but not Macro Functions, which are special function files that can accept arguments. An argument is something that can be configured in the function. This is how the "give_item" functions work: the player manually sets which player(s) to give the item to, and how many of the item to give. (Take a look at a "give_item" file and see if you can figure it out!)
Unfortunately, advancement files can NOT run Macro Functions as you can't tell it to set the arguments. So... you have to run a non-macro function that can then define the arguments for the ACTUAL macro function you want to run. Annoying.
This "advancement" folder is what that is for. Any advancements which need to run a give_item function (like item crates!) will use this folder to store them neatly. I am not proud of this.