What is the most power-efficient way to generate vibration in a small area?
This is generally known as "haptic feedback" and you may find some useful info by Googling that. As regards power efficiency, Maxim produce a piezo driver chip for this type of device and their application note discusses power consumption for a few different mechanisms. Most of the devices I've seen use those small unbalanced motors, but if you need to keep the size down to 4mm square, piezo might be the way to go.