As a developer, my least favorite thing is having to maintain backward compatibility with older systems. It keeps me from being able to use the latest features and I often have to have some code duplicated to do things differently depending on the OS version.
For example I’m using the new, preferred method with launchd to run items when the system is booted. Unfortunately that only works in OS X 10.4 or later, so I just had to add some extra code to maintain compatibility with 10.3 using an old fashioned StartupItem. Of course this also makes QA testing a lot more difficult, since we have more different systems to test with.
Thankfully we’re dropping support for 10.2, which makes it a little easier.