Query planner showing identical row counts for MCV and non-MCV values with a BTREE index of a JSONB field

I have the following table in PostgreSQL 13.3:

CREATE TABLE node (   id serial NOT NULL,   meta jsonb NOT NULL,   ... ); 

And there’s index:

CREATE INDEX node_meta_group_owner_uuid ON node USING BTREE ((meta ->> 'group_owner_uuid')); 

The table has ~20M rows. I’ve run VACUUM ANALYZE.

Number of rows:

db=> SELECT * FROM pg_class WHERE relname LIKE 'node_meta_group_owner_uuid';  -[ RECORD 1 ]-------+--------------------------- oid                 | 19449180 relname             | node_meta_group_owner_uuid ... relpages            | 29815 reltuples           | 2.0835164e+07 ... 

Index stats:

db=> SELECT * FROM pg_stats WHERE tablename = 'node_meta_group_owner_uuid';  schemaname             | public tablename              | node_meta_group_owner_uuid attname                | expr inherited              | f null_frac              | 0 avg_width              | 40 n_distinct             | 812466 most_common_vals       | {48d11628-bfe9-4512-97e0-b308b7b5ac76,6a6b937f-c17c-49cb-a55a-e5346fe4ecfe,949b6f2c-2aae-42e0-a237-58cac017c6a0,f1792b9d-78a1-4811-a2e6-61532b689d07,...} most_common_freqs      | {0.00024385618,0.00020321348,0.00013547565,0.00012192809,...} histogram_bounds       | {00000c34-0cfa-443c-bbfd-75a7df972dde,028ca2c2-6bea-4fdd-a19c-c8b1976e96be,0518044d-41bf-40da-9bc6-763b0883d65b,07b677e7-747e-438e-a6fb-2c4af7c1c435,...} correlation            | -0.00047400856 most_common_elems      |  most_common_elem_freqs |  elem_count_histogram   |  

Now, given an entry (in WHERE) which does not exist in MCV list:

db=> EXPLAIN SELECT COUNT(*) FROM node WHERE meta ->> 'group_owner_uuid' = 'a';                                                          QUERY PLAN                                                           -----------------------------------------------------------------------------------------------------------------------------  Aggregate  (cost=405494.13..405494.14 rows=1 width=8)    ->  Index Scan using node_meta_group_owner_uuid on node t1  (cost=0.56..405233.93 rows=104081 width=0)          Index Cond: ((meta ->> 'group_owner_uuid'::text) = 'a'::text) (3 rows) 

The Index Scan estimates to find 104081 rows.

With entry that does exist in the MCV list:

db=> EXPLAIN SELECT COUNT(*) FROM node WHERE meta ->> 'group_owner_uuid' = '48d11628-bfe9-4512-97e0-b308b7b5ac76';                                                          QUERY PLAN                                                           -----------------------------------------------------------------------------------------------------------------------------  Aggregate  (cost=405494.13..405494.14 rows=1 width=8)    ->  Index Scan using node_meta_group_owner_uuid on node t1  (cost=0.56..405233.93 rows=104081 width=0)          Index Cond: ((meta ->> 'group_owner_uuid'::text) = '48d11628-bfe9-4512-97e0-b308b7b5ac76'::text) (3 rows) 

The estimate for the amount of rows is the same. I would have expected the row estimate in this one to be different (0.00024385618 * 2.0816244e+07 = ~5076 to be precise) as there’s clearly an entry for it in the MCV list.

Why is querying with the MCV value not returning different row cost estimate? Is this related to JSONB?

I do understand PostgreSQL does not collect statistics JSONB column, but the expression index does.