moor: defragmentation also induces wear and tear - but one could argue that while defragmenting, you get that tear once, whereas you get it "all the time" when accessing fragmented files.
As for free space requirements, all defrag apps I've seen take longer time (and shuffle data around more) when there's not "enough" free space. "Enough" is a bit hard to define, since it's a combination of defrag method, file size, amount of fragmentation, etc.