Correction, there is also (3) the need to ensure that preceding blocks are downloaded, which is why we use the concurrency window. However, the full download can complete in well under an hour, and with #1 the entire chain is essentially RAM cached and flushing is eliminated, so by allowing the download to complete quickly, the full validation can complete without CPU gaps.
The concurrent download/validate approach blends these two phases so as to use the free CPU time during download (if any) and to take advantage of memory locality on low RAM machines.