Roughly speaking, the most popular Ethereum client: geth determines its external IP by inspecting the endpoint from ENRequest's PONG message. The local IP address which receives most statements is considered to be the external IP. Since all the bootnodes are IPv4 peers, IPv6 nodes are unable to join P2P network in practice.
Is there any reliable IPv6 bootnode?