Hi. I had the same issue, with my few months old iPhone 4s and I have solved it. Before you read it, I would like to mention, that I am a professional electronics engineer, and I do not encourage average user to open up electronics and furthermore try fixing it themselves. I decided to put this story out for informative use.
~~~~~~~~~ Story ~~~~~~~~~
It is hardware issue. More HW than you might imagine - it's mechanical. the fix is easy, but will void the warranty, I bet. Still, I will tell you what I did, how and why.
Firs of all - I came to conclusion that issue is mechanical by trying to pinpoint exact state of the device, when the glitch happens and it turned out that if I gently push any of the volume buttons in one direction (parallel to the surface of metal side frame of unit) - volume starts to go down. If i gently push any of them in other direction - it stops going down. This pretty much convinced me that issue is mechanical, so I did not waste time to do warranty circle-dancing and got screwdriver set from my drawer.
What I found, after removing cover (two 000 size penta-star screws) and battery (two 000 star screws), was that button board on flexi-PCB can be removed by 3 more 000 star screws. I removed it and gently flipped the button flexiPCB assembly around.
Now - remember, that if you are about to do so - you should be very careful, not to mess the flexiPCB, that is glued to chassis under battery.
What I found under the button assembly, is that button caps are welded to metal plate, and on other (internal) side of the plate, there is small "sliding spring" assembly welded to same plate. Those sliding springs are pushed agains the same flex-PCB button assembly right between the buttons and on both sides of the central screw hole.
Now the issue is that those sliding springs slide directly on top of button "hot" traces, scraping off the isolation coating (and later on they would scrape through the cooper trace itself, i believe).
Next - the button cap assembly is metal, and it goes through electrically grounded metal chassis of phone, when those springs touch the trace, they make an electrical connection. The button inputs of processor or whatever they go to, are pulled up by resistor. When you press the button, it shorts the input to ground, overriding the pull-up resistor, giving logic 0 on the CPU input, that is later inverted by software and interpreted as "volume button x pressed".
Now, what happens, when those springs touch the trace, is just the same electrical action. It grounds the corresponding input through the button assembly - chassis - to the system ground, giving the CPU button press signal.
~~~~~~~~~~ Fix ~~~~~~~~~~
Now, how to fix it? Take a look at that PCB with 5x or more magnifying glass, and you'll see a tiny spot, where the black coating is scratched thru and shiny metal is seen behind it. Just glue anything on there. I just took a robust and hard scotch tape, and made 2 little (about 2mm wide) stripes of it. Then I glued them in both places, where the sliding springs touch the button assembly. Why two, if there was only one button affected, only one spring got through the coating? because second one would do the same soon, and I don't wish to disassemble the otherwise nice gadget again.
~~~~~~~ Conclusion ~~~~~~~
It's definitely a mechanical issue, further more it's a design flaw. Apple should probably recall the series and replace the button assemblies. If those traces ware just routed few millimeters away from where springs touch down on the surface - it would already solve the issue.
If this helped anyone, be my guest and have a fun repairs.
Apple - if I helped you with debug - a gift coupon would be appreciated, but not required though