ZeroConf really just deals with IP discovery and UPnP is perfectly happy to run over it. The service discovery part is handled by SLP which I really don't like (see http://www.goland.org/Tech/slpv2.htm for details) because, ironically enough, it requires the exact sort of centralization that the article accuses UPnP of requiring. The core of UPnP discovery is SSDP and here the article is right in spirit but wrong on the details. SSDP uses URIs to identify the services that one is looking for. Anyone, anywhere can define any URI they want to without ever having to talk to the UPnP forum. But in reality UPnP consists of much more than just SSDP, it also includes the device description mechanism that I wasn't ever really involved with so I won't speak to it. It is in the area of the device description that ends one up in the UPnP forum. The irony of the whole mess is that when we did UPnP we really wanted to use multi-cast based DNS instead of SSDP but the standards just weren't baked yet and we had to release. Also multi-cast DNS suffers from a number of scalability issues (imagine asking for a printer in a building with 200 printers) that SSDP, in theory, was intended to work around. In reality SSDP never added in the critical proxy functionality so in practice the difference isn't that large.
P.S. See section 6 of the SSDP spec (http://upnp.org/download/draft_cai_ssdp_v1_03.txt) for some details on why scalability issues are so hard to deal with in a discovery context.