@Will Jones I've created a ticket for this issue btw:
https://github.com/delta-io/delta-rs/issues/1598
The metadata is there in the parquet file, it's simply not used while reading. Having a quick glance over the repo I couldn't find where the schema is read and inferred. I did see that topyarrow_table calls to the pyarrow dataset which then calls another method to read the schema, but can't find the implementation of how the schema is read.
If this is something that is done purely in Python, I can try to fix it if you can give some pointers :)?