File sharing systems sometimes use the likes of a Tiger Tree Hash to check the integrity of a file as it is downloaded.
Hash trees in general are useful to check integrity of the tree leaves without downloading the full tree, instead needing only the root and tree branch that contains the interesting leaf (plus necessary stubs in the branch).
My question is: why use a tree at all for file integrity checking when what one presumably wants is to download the full file? A plain hash list (a hash per file block + a hash of the list) would have been trivial to implement and manage, and only be marginally bigger than the tree. The list's hash still works as well as the root hash in the tree case.
In fact I only know one file sharing client that allows one to select parts of a file to be downloaded, so the whole use case looks atypical.
So, is this a case of early, marginal, mostly unused optimization? Or am I missing something?