ULN2003 and piezo buzzer

Hey, I'm using an AT89S52 which has internal pull-up resistor on all its port(according to the datasheet).When I attempt to control LEDs attached to ULN2003 it work perfectly.however,when I connect a piezo buzzer it doesn't work unless I connect a pull up resistor (I used 10Kohm) to the input of the ULN2003.As far as I understand the ULN is the one which provides the current for the piezo buzzer, not the uC.

Basically, my question is why an external pull up resistor required just for the buzzer?

ULN2003 outputs are open collector, and I think piezo, due build-in high capacitance, requires "normal" bi-state outputs, which you can model by connecting resistors to ULN2003. There are different kind of buzzers, some has semiconductors inside and doesn't care about resistors.