I'm using a combination of 2 apps, DiskUsage and Link2SD, and they've helped me keep storage use at bay both on Gingerbread and on ICS. The issues I had with the built-in storage management facility of Android were:
- It only shows the space used by the app installation (doesn't count "resource" downloads common in games)
- The size reported on the list of installed apps doesn't consider cache usage (so you have to guess and go looking in the details of suspected apps)
DiskUsage is excellent at locating "resources" that may be taking up lots of space, and may be even be left behind when the app that downloaded them is uninstalled.
But if you have lots of small to medium sized apps installed, or if you're using many apps that stay online, Link2SD allows you to quickly locate any misbehaving one. It shows you a list of all installed apps, and allows you to sort them by name, install date, install size ("apk+dex+lib" option), data size, cache size, or total (install+data+cache) size.
If you have many apps showing a lot of cache usage, Link2SD can also clear all of them at once with the "Clear all app caches" option.
Also, if you're using Gingerbread, be aware that apps moved to SD card keep a part of themselves, called "dex", on internal memory, and the size of this "dex" varies from one app to another. With Link2SD you can sort by "dex" size, and quickly find any apps that may be too big to keep installed on certain phones, even if they allow moving to SD (I'm looking at you, Google+ client). Or the other way around, you can sort by "apk" or "lib", and move to SD all apps that show near the top (and allow being moved).