I have the same problem, and a tip for a slight fix.
I believe this changed with either iOS 4 or the iPhone 4, but since I switched to both very close to each other, I wasn't sure which was the culprit. From reports of others using 3G or Touch 3's I now believe it is iOS 4. The sound on iOS 3 was close to perfect, but still a hair too loud.
The partial fix I recommend involves another change. The EQ settings previously did not seem (to my ears) to reduce the sound, only "Flat" would make the sound slightly less noticeable, so I would use this along with the one volume notch to listen to music while going to sleep. (With iOS 3, I could also listen with no EQ set, and no volume notches and still hear the music. This would usually be my last setting before falling asleep.)
The EQ settings now all seem to significantly reduce the overall sound volume. Remembering my previous use, I have experimented with the new iOS volume and EQ settings. While one notch is still too loud, using one of the EQ settings helps attenuate the sound slightly. I recommend "classical" as the best option that reduces the sound significantly but does not distort the music noticeably.
This is one of those annoying features like the mouse movement on the Mac that infuriates a lot of people, that Apple will likely ignore and never do anything about.