MySQL index size doesn't include all values
Thanks @Akina for pointing me in the right direction: https://stackoverflow.com/questions/16732980/why-cardinality-value-in-mysql-indexes-dont-equal-distinct-count-for-column-val
Running ANALYZE TABLE my_table updated the cardinality to match index size.