I feel pretty sure that low memory machines will have to validate after sync (because the prevout reads are more costly than the insertion guards that cause thrashing), and certainly higher memory machines will be able to validated concurrently (I've already verified this for the full chain). We can cache block objects in RAM as they come in, and keep the download window small, to prevent re-reading of blocks/txs. But the prevouts would still need to be read.
(edited)