Missing caches yields a warning while any other error leading to partial fetch leads to DownloadError. This discrepancy will cause issues, e.g. with CheckoutError later.
An example would be this test:
https://github.com/iterative/dvc/blob/156fc9d4e1b438a5b9766a343af090f8bd22385c/tests/func/test_import.py#L67-L81
If we repalce shutil.rmtree(erepo.root_dir) with shutil.rmtree(erepo.dvc.cache.local.cache_dir), then suddenly we don't have DownloadError anymore it's CheckoutError, but maybe that test is just bad.