Based on Baymard’s research, showing optional fields by default disrupts the checkout experience:

 

The default visible fields are typically:

 

Hide the optional fields, and add links to make them visible:

 

Auto-detect the city and/or region based on the postal code. (see best practice #123 for my main recommendation in regards to the address fields)