Using two pins driven anti-phase, you get a waveform which goes from -3V to +3V, a peak to peak voltage of 6V.
The ground reference shifts as well as the 3V. So at 180 degrees phase difference, and no capacitance, you end up with either +3V or -3V between the two pins, but only relative to each other, not relative to ground, so you really only have 3V between them either way, like you said, the peak voltage. This part I understand - but this will only ever result in 3v across the outputs at any one time, unless there is something else at play.
Surely the only way to end up with the result you describe is to use the capacitance of the piezo to create a sort of semi-persistent virtual ground/3V reference, in order to give the 6V peak-to-peak.
Please tell me if I'm wrong, but if you do, tell me why I'm wrong as well. You haven't said
how you get a peak-to-peak (which is what I have meant all along, btw, no confusion) of 6V with this method, just that you do. I'm not necessarily doubting you or that it does work, but it doesn't make any sense to me without using the capacitance.
It's not just me, by the way:
http://electronics.stackexchange.com/questions/15629/driving-piezo-buzzer-from-mcu-pin