In particular, passing around of schema is a bit wonky, see https://github.com/apache/datafusion/pull/15769/files#r2052245527.
If we force passing file_schema into ParquetFileSource::new and such that means as a user you have to pass it into two places.
I think the real solution is to have a FileSourceBuilder trait that has build() method that accepts file_schema and produces a FileScan. Then FileScanConfigBuilder can call that? It might be too much API churn to be worth it.