I think we would benefit greatly from the ability to set the buoyancy of individual objects, especially from script. This would solve a bunch of problems. This has been brought up before:
One big problem I run into is that to animate smooth movements of things like my doors, I must set mass to 0. If I don't, the doors (etc.) continually drop down a little between updates. This works great, but then when someone tries to stand on top of one of these zero-mass objects, they go "crazy". Were I able to call Body.SetBuoyancy(-Body.GetMass()), then I could set the mass of such an object to a very high amount so it doesn't easily rotate, thanks to its momentum. And it will continue to float fairly smoothly.
Another good usage would be in dealing with airships and variable density atmospheres. Imagine such an airship that finds a natural elevation based on higher density "air" down lower. All you need to do that is to alter the buoyancy of the object based on its elevation.
An extreme example of variable buoyancy is air versus water. The thousand ton boat falls out of the sky, but because it displaces water, it resists sinking into the water. Again, it's enough to just have the buoyancy amount change continuously as a boat transitions up and down over, say, twenty feet of draft.
By being able to alter this in script, there's an awful lot we can do with dynamic objects.
It would be valuable to set the buoyancy for avatars in script, too.