Eu acho que não tenho 100% de certeza que essa foi a verdadeira razão pela qual os desenvolvedores do WP tomaram essa abordagem, mas o senso comum me diz que serializar preserva os tipos de variáveis e possui um mini construído na detecção de erros, e json armazena apenas valores de string { key : value }
, então quando você voltar ao PHP, você terá que adivinhar o formato ou fazer um analisador para ele. Isto irá forçá-lo a ter duas maneiras diferentes para lidar com seus dados: anterior, para armazenar os dados como json e depois de decodificar o json, ele retornará como um objeto totalmente diferente.
Este é o principal motivo da diferença de tamanho, o PHP está armazenando não apenas uma matriz; está armazenando quantos elementos estavam na matriz quando ela foi serializada, seus tipos e seus valores.
Você não está armazenando apenas pares de valores de chave no banco de dados, mas também pode estar armazenando um objeto com diferentes tipos de variáveis.