I do own an HTC android phone, thanks. Its battery life does drive me nuts. I also work with the Android source and know what your phone is doing when you think it's idle.
I appreciate your experiences, but these are anecdotes, not data. These anecdotes are not contolled for software behavior, which is the root cause of most battery problems (time w/o signal, background tasks, screen brightness, etc). A before-and-after testimonial is not as effective as side-by-side tests which control for all the other variables.
Have you tried Juice Defender? This app actually does monitor and turn off the software behavior that causes most idle battery drain, and does a good job at it.
Here's a nice primer on exactly why your Li-Ion battery behaves the way it does:
How to prolong lithium-based batteries
And they even talk about how easy it is to screw up the simple "gas gauge" calibration.
Here is exactly what's happening when you charge a Li-Ion battery:
Charging lithium-ion batteries
Short answer: what people are calling "bump charging" is shortening your battery life by tricking the thermal protection and charging circuits. Basically, you are re-setting the baseline measurement the charging circuit uses to measure temperature and internal resistance, the two things that tell it when charging is done. Chargers can't directly measure "FULL" or "EMPTY." They measure temperature and resistance. And voltage, of course.
They know it's "EMPTY" when voltage hits a pre-set low and resistance falls below a baseline. They know "FULL" when voltage and resistance hit a pre-set point and they stop charging when temerature hits a pre-set point.
You are not over-charging or topping off your battery, you are just over-heating it at the end of its charging cycle when it's supposed to be on a cooler trickle charge. You may trick the gauge into showing "fuller."
Let me be clear: "bump charging" is a myth. No good will come of this. You will destroy your battery. Bad battery life is not a myth.
You could make the case that the baseline resistance established by the HTC charging circuit is wrong, and that the battery's thermal protection is too conservative, but not without controlled side-by-side tests. To date, HTC hasn't confirmed this.
The fix is for Google to start migrating the behavior that Juice Defender enforces into the core OS, in particular the radio stack and the display drivers.
If you don't want to use Juice Defender but wouldn't mind rooting your phone, there are several ROMs over at xda-developers that monkey with the radio stack and other idle behavior to prolong battery life. That's the second best bet until Google migrates some of these tricks to the actual OS core. Some of the better software tricks for prolonging battery life are patented by RIM, however.
To answer the OP's question: "Is it a hardware or software issue? If I root my device will that fix it?" It's a software issue. Yes, rooting can fix it if you're willing to flash a new ROM.
Please try Juice Defender first and report back. It beats bricking your phone or setting it on fire
--Qfg