First, the OS X version does not support Armory management of bitcoind, so I'm stuck with the BitcoinQt approach.
I'm aware of that but non Mac users read these threads too so I use platform agnostic statements whenever possible.
Second, I guess I can just wait till the blockchain downloads, and then have Armory build its db afterwards. But is there some reason in principle that Armory cannot recognize incomplete blocks? During normal operation (i.e. after most of the blockchain is downloaded), Bitcoin-Qt is periodically getting new blocks, so there is a short window every 10 minutes when the situation is similar. Also during normal operation, I assume Armory periodically scans for new blocks (after Bitcoin-Qt tells it a new one has arrived), to extend its own database and display fresh data to the user. When it does this, there are probably no new partial blocks yet (because the next one wouldn't come for at least 10 minutes). But there is a small chance that two blocks are found almost simultaneously, right? In which case, right after Bitcoin-Qt tells armory it's ok to update its db, it might start downloading other partial blocks from random peers. So why couldn't the same "missing block data" cause crashes even after the initial bootstrap? Or are there certain state guarantees about ~/.bitcoin/blocks that are satisfied *except* during the initial bootstrap?
Core behaves differently when it verifies blocks through milestones hashes as opposed to checking each transaction sig. The usual behavior is checking the sigs, which is slow and doesn't trigger empty block data. Milestone hash checking is a lot more aggressive with disk writes and will resort to the headers first approach as much as possible. Also, you don't want to be heavily reading and writing the same data concurrently.
Regardless, the documentation (for all versions, but especially OS X since there's no choice) should probably be clarified to inform the user who is manually running bitcoin-qt that they must not run Armory until the blockchain is "fully" downloaded.
Too much has changed in this release so I don't expect most documentation to be up to date yet. Headers first changed some significant things under the hood for us and we might be more and more motivated to resort to blocks over P2P.
As for letting BitcoinQt run its course before starting Armory, it wasn't a requirement up until Core 0.10, but rather a good practice. Better let the first finish before moving on to the second.