IDL is used to scan for API version information. IDL was not designed to be used as non-normative scanner for fields. It expects to know all fields and provide guarantees around duplicate fields.
APIParametersFromClient uses a struct to scan for fields in client payloads. These fields are typically absent and because of the duplicate field check for extra fields, a std::set is built with all the field names. Since the command will be processed later in the pipeline, APIParametersFromClient does not need to do duplicate field detection for extra fields.