While you bring up a valid point it wouldn't exactly be hard to resume, for example at the moment mIRC grabs the filename checks if it exists, if so and the recieving file is bigger than the stored one, checks if its 'so-far' the same, and removes a few bytes then resumes from there..
Resuming with preallocated space would be, i.e. the file:
It would simply find the last relivant data item, 'A' and remove a few bytes and start from there.. so it wouldn't be really hard.
As for whether it would reduce fragmentation, I don't have a clue.