I'm using vanitygen. I supply a public key to it and a prefix. It then finds the vanity address using said public key and provides me a partial private key. Sites like bitaddress.com can take that public key and the partial private key and determine the address. The public key itself is not enough; that returns a different address.
That functionality is intended for vanity key "farms" that calculate private keys as a service. The key combination ensures the generated key is known only by the client and not the service.
I was involved in a short discussion on this a while back so I'll link the thread
https://bitcointalk.org/index.php?topic=268567.0 in case its of any use to you.