Serialisation often needs additional information not present in the struct definition: for enabling backwards-compatibility and default values.
Same for command line parameters. We want documentation strings, maybe dashes in the name etc.
But that can surely be solved with a little more advanced struct
I have one word for you: attributes (which the compiler, and the reflector, know about).
Does static reflection simplify such cases? ... Outlook unclear. It's definitely gnarlier to actually write the serialize() method, and in many cases, it does feel like a better option is to write a specific domain-specific language to specify what you want to specify, with a tool to operate on it as appropriate (think something like protobufs for serialization).