I like to use the SoftPlus GSiteCrawler. Also free. http://gsitecrawler.com/
It is highly configurable. So, I let it crawl my site once and then set patterns for it to exclude. This way, I can automatically exclude things like duplicate pages (esp useful if there is any kind of url-rewriting going on), extra stuff in forums (like every different sort-order is considered a new page), revision history in the wiki, etc... Then I save it with these rules and let it crawl my site again. So once it's set up, it doesn't really need to be re-configured.
It can output the google sitemap xml, but can can put some xsl with it so that you can point to an html-like static sitemap page. You can export to csv, or to straight html. I use the xml for the search engines and then export html and put this in a text module on my site for a human-readable sitemap.
Again, all free and easy.