Reducing size of datatype involved in index fails where as increasing size work
Variable length character types only store actual content put into it and odn't keep the extra space allocated (thus the name "variable length").  As a result, when you INCREASE the size of a variable length column, the data storage doesn't actually change (in the table or the index).  The SQL engine is smart enough to know that and doesn't do anything to either, other than notate that the max size has changed.

On the other hand - if you were to try your script using fixed-length data types (i.e. CHAR of CHAR), any change up or down will change how the content is stored (since the full length is pre-allocated).  This would force the table to rewrite (and the index would need to reflect the change as well).

If you run that very script you have above but with NCHAR, the reported error would pop up during the INCREASE as well.