An attribute whose constructor ends in a params array was always printed with
the array spelled out, so omitting the optional arguments in the source turned
into a four-line `new string[] { }` in the output.
Expansion is not unconditional: an attribute may have another constructor that
the shorter argument list binds to instead, which would silently change which
constructor the recompiled attribute picks. Overload resolution over the
expanded argument list decides, and only a result that names the same
constructor in expanded form is written that way.
Assisted-by: Claude:claude-opus-5[1m]:Claude Code