Right now I'm doing the "item that holds X liquid represented as damage", still kinda needs to turn to a separate item ID depending on whether it's empty or holding a particular liquid.
HOWEVER, the way liquid managers are made, I can't find a way to handle right clicking on a tank, for example. So I'm going for the "machine that fills/empties the portable tank" approach. It's basically a block that you can pump liquids into/out of (via BuildCraft pipes), and will have a slot where it "recharges" your tool like it works with the BatPack in IC2. I'm calling it a fuel pump for now. Most of the functionality (internal tanks, input output) is a part of the buildcraft "api"... I'd just need to handle the "tool" charging itself.
The good thing is that BC is open source, so I can look at how other machines work, such as how engines load fuel/oil and water on two separate tanks.
Also, it seems that the "disappears if discharged" is a function of the object itself and not whatever you click on. Essentially, when you right click on a tank, for example, it gives the order to "disappear" to the item... and buckets just happen to spawn an empty one when that happens, or something. So, fuel cells don't spawn empty cells, period. Not sure how to override that.
I'm also going to see if it's possible to handle right clicking on the liquid blocks themselves, it would be interesting to be able to manually remove lava directly into one of these.