The default for files_changed is to do a somewhat expensive repo.get_changed_files call. It's aggravated by gecko_taskgraph having its own default that uses repo.get_locally_changed_files, which can be even more expensive.
But out-of-tree extension of the parameters schema (per extend_parameters_schema) is not the only way the value may be uselessly computed: one may call Parameters(files_changed=...), and both values that were computed above end up thrown away.