It's pretty much simple.
To have, for example, the camera working, you need the driver. This driver, if needed, have to be updated to match the OS. The fact that you can easily upgrade from Windows 7 to Windows 8 is because, for example again, nVidia provide the driver for your graphic card updated to Windows 8. Closed source but released.
In the Android world, if the manufacturer, like HTC, doesn't update the Sensation to JB, no need to have the camera driver for JB, they obviously don't give a **** about us.
What would be great, if HTC doesn't update the Sensation to JB, is that they just release the JB kernel to us, so we will have all the driver. Well, almost, there's another problem!
For example, again
, the bluetooth driver from HTC doesn't work as it is on AOSP cause it doesn't use the same interface, HTC use a stupid one anyway. So even with the driver, if it's not a Sense ROM, we may have to tweak it to have it working with AOSP ROM.
As you can see, it's always a big deal sadly.
The current JB ROM 4.1.2, correct me if i'm wrong, doesn't use "proper" JB driver for most the of things, it's ICS driver tweaked to work on JB.
Anyway, i'm not sure about everything I said here, but i guess i'm pretty close of the reality