One of the main problems is the limitations of the Blackberry OS requirement that apps have to live in system memory even when they are not running. A 16GB iPhone can have tons of large apps all loaded into the 16 GB. A Blackberry Bold with an 8GB memory card and 1GB of device flash memory still has to have all of its apps loaded into the 128 MB of system RAM of which less than 50 MB is free on most Bolds.
That puts a severe limitation on developers to keep apps lean and a tight limit on how many apps you can have. It is probably much more difficult and expensive to develop apps under such constraints. I don't understand why RIM can't add a capability to load apps into memory from flash when executed and release the memory when exited. Even if that capability was limited to the system flash which can be depended upon to stay in the device (unlike cards) that would still be a great improvement.
I hear that RIM is building an "App Store" like Apple's but the memory limit will greatly limit the app market compared to Apple.