HubSpot does not currently allow you to natively associate multiple shipping addresses with a single contact record for quotes. At this time, when creating a quote and selecting a contact, only one address can be associated per contact.
There isn’t a built-in way to store or select multiple shipping addresses for a single contact within the quoting process. The most common workaround, as you noted, is to create duplicate contacts with different addresses, but that can fragment your data.
For more robust address management tied to a single customer, some users consider these approaches:
Associate the contact with a company record in HubSpot. You can maintain multiple company records (each representing a shipping location) and link the contact to different companies as needed. When making a quote, you choose the corresponding company with the right address
Maintain a custom property on the contact (e.g., a multi-line text field with all addresses) and copy-paste the correct shipping address into the quote as needed. However, this is not automated and requires manual action.
For more advanced or automated needs, consider working with a custom object (if available in your HubSpot subscription) to represent “Shipping Locations,” associating them with the contact, but this would require a more complex setup.