First, thank you for prodding me to read about STUFF, a function I'd seen mentioned but which I haven't used.
Your explanation of answer starts with
I could not find an explanation of the "lengthing" of the declared item....
This was the point I considered after reading the BOL entry and before choosing my answer. The given QOD code does not assign the modified value to either of the variables. The function may return data with a type inherited from the input, but the length of the function's output is not constrained by the lenghth of either input string. Consider what you may naturally expect if you were to add these lines to the end of the given script:
DECLARE @string2 VARCHAR(50)
set @string2 = STUFF(@string1, 11,0,@Stuffing)
A truncated value of "Microsoft ******" or "Microsoft ********************" would hardly be acceptable.