many reasons which vary depending on the developer, and for the vast majority, many of these reasons are combined.
1. As a test run for future paid apps. Many developers are now working on major apps that will fully take advantage of the iPhone's power, but they wanted a "test run" just to see how everything works and get the experience of developing for the iPhone.
2. As a demo of a bigger, better paid app. You see a lot of lite versions out there. These basically serve to get a consumer "hooked" on teh free version and then hope they buy the full paid version. They're hoping that buyers who wouldn't look twice at the paid version pick up the free one and get hooked.
3. They have other ways of making money. Apps like AIM and Facebook and myspace all make money merely by you being on their network. They don't need to sell the app, in fact charging would probably hurt their business, as they'd have fewer members, and get less ad revenue.
4. Its a hobby and they just want people to use it.