A SEC 1 §2.3.3 define as octet strings usadas em quase todo lugar: a não comprimida, 0x04 ‖ x ‖ y (65 bytes para P-256 e secp256k1, 97 para P-384, 133 para P-521), e a comprimida, 0x02 ‖ x ou 0x03 ‖ x, em que o prefixo indica a paridade de y (33, 49 e 67 bytes). A decodificação de um ponto comprimido resolve a equação da curva para y, e um decodificador deve rejeitar um x sem y válido.
A forma que você encontra depende do ecossistema: o SubjectPublicKeyInfo do X.509 quase sempre traz pontos não comprimidos (a RFC 5480 exige suporte a eles e torna os comprimidos opcionais), a importação raw do WebCrypto aceita os dois nas chaves ECDSA em navegadores modernos, o Bitcoin usa chaves comprimidas de 33 bytes desde cerca de 2012, e o Ethereum deriva os endereços dos 64 bytes de x ‖ y, sem o prefixo 0x04. As JWKs sempre trazem membros x e y separados.
As codificações de Edwards e de Montgomery são comprimidas por construção: uma chave pública Ed25519 é a coordenada y de 32 bytes com o sinal de x no bit mais alto, e o X25519 transmite apenas u. Uma incompatibilidade entre uma chave de 33 bytes e uma de 65 bytes é uma causa comum dos erros “invalid public key” e “point is not on the curve”.