This is not true actually. The Smart Contract is the "whole thing", which can store a billion (and even more) of different NFTs represented by its own Token ID. What you mean is that a ERC-721 does not define batch-transfers where a bunch of Tokens can get transferred with a single transaction. Indeed, every single NFT needs its own transaction in order to put it from Wallet A into Wallet B. But it does not need a single Smart Contract per each token! Let's have a look at OpenSea as an example. They have one single contract for all their ERC721 token which stores all these fancy NFTs that have been ever listed on OpenSea (for the sake of completeness: people are allowed to add their custom smart contracts, though).
But, although the Standard does not define some function, everybody is free to add this in a custom contract. However, ERC1155 defines such batch-functionality directly in the standard, which was told here as well correctly.