If you wish to defragment free space on a drive here's how to do it quite easily.
Using Disk Utility, repartition your drive, giving the strict minimum space required for the original volume, and then create a second volume with the remaining available space. This takes time, as all your data will be joined on the volume that is resized but not erased. Then when finished, get rid of the volume you just created, giving back all available space to the original volume. This part is fast. That's it; you're done.
[robg adds: I haven't tested this one, but 10.5's Disk Utility will supposedly allow partitioning without erasing the existing data. If you're going to try this hint, I strongly suggest you have a good backup first, just in case things go wrong. Note that Apple states most users do not need to defragment -- there will be little benefit to the typical user, thanks to OS X's built-in tools to handle fragmentation.]
Mac OS X Hints
http://hints.macworld.com/article.php?story=20071205005251927