Why is there a hyphen following the postal code with this address format?
It looks like CiviCRM automatically includes the postal code suffix in the {civicrm.postal_code} token, so I think you can just remove the suffix and hyphen from your address configuration.

Using your stated configuration in Administer > Localization > Address Settings, I see the same behaviour on http://d46.demo.civicrm.org when printing address labels.



Using this format (with postcode suffix and hyphen removed), I see the suffix included in the output of the postal_code token.

{contact.addressee} {contact.street_address}
{contact.supplemental_address_1} {contact.supplemental_address_2}
{contact.city}{, }{contact.state_province}{ }{contact.postal_code}
{contact.country}


Results in -