Não importa, eu encontrei o problema.
O planejador de consultas era mais inteligente que meu conjunto de teste de brinquedo; visto que a maioria das linhas corresponde à consulta, foi para uma verificação sequencial.
Se eu tentar com
ilike '%nd 0%'
em vez disso, nenhuma linha corresponde e EXPLAIN ANALYZE informa Bitmap Index Scan on test3_value_trgm_idx
corretamente. Portanto, normalizar o JSONB original dessa maneira funciona. Mas também tentarei encontrar e comparar de outra maneira, usando expressões regulares sobre
TEXT
, para evitar ter que criar e manter outra tabela.