I am sorry I did not comment on #4431 and #6083, but I did not know about them until today.
I think box-shadow-offset could be defined with none | <length>{1,2}# instead of none | <length>{2}#.
<spread-shadow> would have to be defined with <'box-shadow-color'>? && [none <length>{0,2} | <length>{2,4}] && <'box-shadow-position'>? with a prose saying that the first two <length>s are for box-shadow-offset, etc, and that it always serialize with two explicit <length>s in box-shadow, when other <length>s are not omitted.