I took the following from another site:
Prior to Froyo, Silent and Vibrate were 2 distinct functions:
Silent: ringer volume at zero and vibrate was disabled. Perfect for a theatre or a quiet meeting where even a vibrate would be annoying and disrespectful.
Vibrate: ringer volume at zero and vibrate enabled. Perfect for keeping the phone in your pocket, being aware of notifications, but not having your phone beeping and ringing all day.
By using the volume rocker, it was possible to adjust from full ringer volume down to low ringer volume. If you continued down after the volume was at it quietest, you activated vibrate mode. Then, if you clicked down once more, you would enable silent mode. Also all makes sense. And is extremely useful and intuitive.
In Froyo, Google has changed the way the OS handles volume control when it comes to silent mode and vibrate mode. And quite frankly, they have screwed it all up. Now, in Settings, you can specify whether the phone should vibrate "Always", "Never", "Only in Silent Mode", "Only when not in Silent Mode".
"Vibrate only in silent mode" defeats the purpose of silent mode.
Ugh. So what that means is they have essentially done away with a distinction between silent and vibrate and now instead of having quick access to both options, you have to pick whether silent means truly silent like before or whether it really means vibrate. So frustrating.
So far, the only solutions I have seen out there are to download one of the many widgets that allows you to toggle between vibrate, silent, and ringing via a home screen icon. But this is not good enough. It's a bandaid. I want Volume Rocker control back of true Silent and true Vibrate modes. Maybe Google will realize the distinction was useful.