The only implementation I would support is one where the asking website doesn't know your ID, and the verifying website doesn't know what you're trying to visit. Essentially just asking for a one-time use token that verified your age, and providing that token to the website you're trying to visit.
Edit for a bit more detail: User authenticates to ID website, which provides them a token with age verification (true/false) and a short (10 minute?) TTL. This token is encrypted by the ID website. User then provides this token to the asking website (eg: pornhub). Pornhub then sends the token back to the ID website to decrypt it. All pornhub knows about you is whether or not you're of age, and the verifying website never knows what the token is for.
The whole point is that the token itself doesn't have any personal info attached to it, only a yes/no and expiry time.
I'll even one up my original suggestion - it uses standard public/private key encryption, where the government issues a simple json token with a yes/no Boolean and a TTL. The public key that can decrypt the tokens is public. Pornhub then decrypts the token and verifies the boolean and expiry date, all without talking to the government at all.