The cost model was not accounting for the fact that we can generate vrgather + an index expression.
One thing to call out - I did not model the difference between vrgather and vrgatherei16. The result is the constant pool cost can be slightly understated on RV32. I'm not sure if we care, if we do, I can add in the handling for that case.