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)