You can share bandwidth among the ports. The default option for 8 ports would use 4 PCIe lanes for each pair of ports. But even full bandwidth for all ports is 32 lanes, not too hard to do.
But even my CPU could manage to have 8 lanes feeding a GPU and 8 lanes feeding a switch for the thunderbolt ports, something that provides enough bandwidth for the vast majority of use cases.