Why should I use X.509 Authentication over PKC based Authentication?
In real communications, you often don't reliably know each others' public keys. X.509 certificates provide a way to verify a public key (as the certificate is signed by another key, and that key can be in a certificate signed by a third key, and so on, until we reach a public key that the other person does trust). Certificates are unnecessary when both parties already know each others' public keys through some form of out-of-band communication.