Almost all Mac OS X apps should not have installers or uninstallers. (Un)Installation is done by drag-and-drop, and that's how it's meant to be. If you absolutely need an installer, you can use Apple's installer, which if you run it a second time presents an option to uninstall. But the recommended and proper way of doing it is just to use drag-and-drop.
Limewire, the app mentioned, shouldn't have an installer or uninstaller (other, native P2P apps don't) for its Mac OS X version. As for preferences and other files created, they remain on your system if you drag an app to the Trash (i.e. uninstall it), which is also how Apple intended it. There are tools to remove all traces of an app, like AppZapper, but developers should always follow the HIG and distribute the .app bundle for dragging, zipped or otherwise.
It all depends on how sophisticated your app is. How do you run launchd with a drag and drop installer? You don't. That's why there's PackageMaker (made by, ahh, oh yeah Apple).
PackageMaker doesn't have an uninstaller. The post tells you how to create one.
How many apps legitimately need launchd to start up? I can only think of a few apps; Little Snitch, VMware Fusion, iStat and, possibly tablet and printer services. The rest of the stuff, well, Adobe doesn't need to launch a process at boot for me to use Photoshop.
OS X is not Linux. launchd is not cron. Don't treat them the same way. There's better way's to autostart an app then (ab)using launchd. Look at the Shared File List API in Leopard or having your app do a quick search with Spotlight to find the files and delete them. You could even name it "Reset Preferences" for the user if you don't want to have a big ugly "Uninstall" button in your program.
Apps shouldn't be using launchd in the first place. So there should be no need for an uninstaller.
Launchd was just one simple example. Applications that use PackageMaker are using it because they need to do more than have the user drag and drop a single app bundle. PackageMaker exists for a reason.
Launchd is Apple's recommended way of launching applications on startup. If you know something better, I'm all ears. If "apps shouldn't be using launchd" why would launchd possibly exist, and why would they repeatedly recommend it as a replacement for cron, xinetd, mach_init, and init?
This also isn't talking about an "uninstall button." That would be ridiculous. It's talking about including a double-clickable uninstaller bundled with your app. If you don't want to uninstall, don't double click on it.
I have never found the lack of an uninstaller to be a problem. A quick look reveals 122 items in ~/Library/Preferences and 27 items in ~/Library/Application Support. I'm sure there are a handful of files elsewhere. This is hardly unmanageable.
Limewire, the app mentioned, shouldn't have an installer or uninstaller (other, native P2P apps don't) for its Mac OS X version. As for preferences and other files created, they remain on your system if you drag an app to the Trash (i.e. uninstall it), which is also how Apple intended it. There are tools to remove all traces of an app, like AppZapper, but developers should always follow the HIG and distribute the .app bundle for dragging, zipped or otherwise.