I don't think you're understanding exactly how raidz (or parity based raid) works.
If you lose a disk, you have literally lost that data. Having the 'metadata' makes no sense. The only way to get that data back is by reading the rest of each block from the remaining disks along with the parity and recalculating it. This is why you would end up reading 160TB if you had a full array of 40x4TB disks rather than just 4TB. The data for that 4TB disk no longer exists, it has to be recalculated.
As far as I'm aware this is the same for raid5/6 and is one of the main reasons why it's strongly discouraged to have any more than 8-10 disks in one vdev. It's probably the biggest mistake anyone can make when choosing pool configuration.
As for not 'scaling out', I don't see the problem. A pool with 1024 disks in 128 8 disk vdevs should rebuild no slower than a pool with 1 8 disk vdev. If you lose any disk, it would only have to read from the other 7 disks in the same vdev. In fact ZFS only needs to read the actual data - many raid arrays will rebuild the entire disk including the empty space.
If you lose a disk, you have literally lost that data. Having the 'metadata' makes no sense. The only way to get that data back is by reading the rest of each block from the remaining disks along with the parity and recalculating it. This is why you would end up reading 160TB if you had a full array of 40x4TB disks rather than just 4TB. The data for that 4TB disk no longer exists, it has to be recalculated.
As far as I'm aware this is the same for raid5/6 and is one of the main reasons why it's strongly discouraged to have any more than 8-10 disks in one vdev. It's probably the biggest mistake anyone can make when choosing pool configuration.
As for not 'scaling out', I don't see the problem. A pool with 1024 disks in 128 8 disk vdevs should rebuild no slower than a pool with 1 8 disk vdev. If you lose any disk, it would only have to read from the other 7 disks in the same vdev. In fact ZFS only needs to read the actual data - many raid arrays will rebuild the entire disk including the empty space.