USB on RaspberryPi is quite a complicated topic. USB in general is very complicated bus, with many modes of operations and possible configurations. It's not often but from time to time it happens that some USB device won't work with some USB host while it is working without problems with other USB host (like other PC computer). Problem is - with RasbperryPi, comparing to other USB host, it's much easier to find a device that has problems.
Some more details
So there are two separate issues here:
RaspberryPi does not deliver enough power for some devices. Using powered (active) Hub solves most of this problems.
Usb host device in RaspberryPi is not the best one and it has a lot of problems. Good host devices provide a lot of hardware support for many USB bus features while the chip used in RasbperryPi does not. Unfortunately it seems that it just wasn't designed to be used as reagular USB host connecting many complicated USB devices.
There is a lot of ongoing effort to fix all the problems in software, though. There is one RaspberryPi Foundation's employee working full time just on that right now and there are some other volunteers helping. It seems that the progress is quite good and we already have some fixes in the official firmware. More patches are available, however, but they are much more intrusive and are not yet considered stable enough to be pushed to the official firmware yet. This should change in very near future, though.
I consider USB host to be the weakest part of the RasbperryPi device. The problems where especially visible at the beginnings of RasbperryPi and are being constantly improved over the time. This means that many informations about USB problems on RaspberryPi you can find on the Internet may be outdated right now or will be outdated in very near future. That being said, it is unknown if all the problems will ever be fixed.