As a prime example, making a network connection is a black art using their SDK, and every developer ends up rolling their own connection manager to do so. If you join the Blackberry Internet Alliance (~$1,200 a year IIRC), they'll make this easy on you by letting you use BIS (Blackberry Internet Service). This is ridiculously constraining when it comes to creating useful apps.
Another major point of pain is their code signing tool. To produce a build that's deployable to a device, you have to sign the COD file using their remote code signing server. The server was down almost daily leaving me dead in the water during critical testing periods.
Lastly, if you decided to make use of certain API facilities like persistent storage, a device reboot was required after every deployment. Given a five minute reboot time on many devices, this could consume an hour or more each day of my dev time.
I'm not sure what RIM's future plans are, but making things easier on developers would definitely be a step in the right direction if they want to remain viable.