One way to do it: change to “based on index” instead of percentage, and animate for the ‘worst case scenario’: set keyframes that animate from 0 to 100 words, even if there are just a handful, Then if you add more words, the timing will be linearly proportional.
Alternatively, an expression could look at the sourcetext, and calculate the percentage based ranges form that, which would work without keyframes.