As a matter of fact, it is OPEN DRAIN, not OPEN COLLECTOR ..
Historically speaking, early microcontrollers didn't have much inside and they had to relay on external devices such as memories ..
To connect external memory one needs bi-directional port and the simplest way to obtain bi-directional line is to use an open drain as the output line ..
When the output transistor is blocked, an external device can control the line ..
In other words, when software writes "1" to the latch assiciated with the output line it is fast turned into an input line ..
Nowadays, most of 8051-derivatives have enough internal program and data memory, so the open-configuration feature is hardly used, but some designers are happy to use these pins as I2C drivers, which require open-drain configuration ..
Regards,
IanP