Your PS3 controller batteries are old, as you've mentioned. Meaning they hold less charge. This is the number 1 contributing factor. However there is another factor: the amount you use them has no effect on their ability to hold charge, but does affect their current state of charge.
There are three things that make a battery lose its charge:
a) Use: obviously
b) Disuse: This one's a bit tricky.
Crash course in basic electronics:
The thing that causes electricity are actually small particles called electrons. In wires and other materal that conduct electricity, these electrons pretty much roam freely, however because they're negatively charged, they are attracted to strong 'positive' charges, and repelled by negative ones (like other electrons). This is exactly like how magnets have a north/south pole.
Why we care:
Batteries 'store' electricity by pulling all the electrons up one end of the battery. When you're using a battery, they slowly trickle out, are 'used' and are fed back in the other end of the battery, eventually equalling out the battery's charge again (making it flat).
The problem is, when you're not using the battery, the electrons actually drift away from each other (because they repel each other) and eventually drift away so much, that they cause an equillibrium again. 0 net charge. Flat.
- This is the contributing cause to why you pull your controller out of a cupboard, and it has so little charge
c) Age of the battery.
Most batteries use chemicals. These chemicals tend to break down over time (whether you're using the battery or not). As such, the maximum charge they can hold becomes less and less as time goes on.
- This is the contributing cause to not being able to hold charge for long periods.
Long story short: Buy a new controller. Make sure it's actually new, and hasn't been sitting on a shelf for 2 years, otherwise the age of the battery will still be apparent.