The way Minecraft stores data is in the block itself. Not when you break it. When the leaf is first spawned by the world generation, the data at that point controls whether or not the leaf drops a sapling. It is not decided when the block is broken which is a common misconception.
So, when the block is broken with shears/silk touch, the data is removed BUT will not drop a sapling because Minecraft (Mojang) does not want you getting infinite saplings with this. When you place the leaf back down, it will generate whether or not to drop a sapling or not.
Fortune on axes runs its own randomizer to determine how many leaves the block should drop but ALSO removes the data currently in the block, like silk touch.