Agreed but the sync has to go by blocks and the sync has no way of knowing the number of transactions in each block until it reads the block header and it can only read the current block it’s processing.
Discussion
It's one of those lessons you learn just from spinning up a node.
Oh shit - it's not just downloading & verifying the blocks, it's verifying each transaction in every block.