What impact on the index storage size does overprovisioning of varchar types have?
Variable length columns only store the actual data present in the column.  In other words, the defined length of a varchar column has no bearing on the amount of physical storage allocated.

However, querying the data requires a memory allocation that is commonly calculated to be the number of rows expected multiplied by 50% of the defined column size.  So, if you define a column as varchar(500), but only store 50 bytes in the column,  you're wasting 200 bytes of RAM per row in memory.