Alerts are broadcast in the same way as transactions. Each node, upon accepting the alert, sends the alert to all of its peers.
Bitcoin won't relay alerts that are signed with a different key. Propagation might not be very good for any client if different alert keys start being used.
That doesn't sound very scalable... Does anyone remember the gnutella bottlenecks? If not, read up on this:
http://en.wikipedia.org/wiki/Gnutella#DesignAlso not relaying alerts signed with a different key basically means there's only one person in the whole world that can send messages through the network. Isn't that kind of against the spirit of p2p and decentralization in general?