IMHO I think it's because the market if full of coders that don't know what they are doing.
Some major reasons:
1. Not everyone can afford a device, so they have to code to the emulator. This is fine, and how I started out, but you can't get a quality app without a real device to test on, just the way it is.
2. It seems like a lot of apps are created by novice programmers. Especially since java is so easy to learn, but if you dont have a lot of programming experience it will show.
3. Also, the android platform is sort of quirky a lot too, lots of little details that you may not notice right away until you get more experience writing apps on it. If you think "I know java, and android is in java, so I can code something up in 3 days flat!" , well, unless it's just a simple app, you are fooling yourself. It takes time to become properly familiar with application lifetimes, perference saving, permissions, etc. This is not just java, it's actually an O.S. like windows with it's own API and rules to follow, and it takes time to learn how to use them properly.
4. Lastly, crappy testing. Most coders want to write programs and release them. They don't have much experience in proper testing (or the patience)
That is why I think a lot of the apps suck. And also we don't yet have any real "money" in it yet, in that we get big companies who actually invest money into an app to make it great. It's probably mostly single developers or small teams that have more limited time and resources.
-niko