I just tested this out for you and found that it is possible. The key is having a row per contact and duplicating the email across multiple rows, then having a different company domain name per row. I ave included a sample excel file that I used on this post.
As Olivia said, you can currently do this by including including multiple rows of the same contact in a CSV and then using a different company domain on each row, so that HubSpot can identify the contact and multiple companies to associate.
Full disclosure, I work for Insycle in product marketing, but Insycle is able to provide some additional flexibility here. Using Insycle, you can set multiple associations and use any field (not just company domain) to match.
So with Insycle, you would only need to include 1 row for each contact, and could include multiple companies (company names, domains, or full URLs) in separate columns. Like Company A Name, Company A Domain, Company B Name, Company B Domain, etc.
Then you could use those custom columns to match and make the associations between the contact and companies in bulk.
The one downside is that Insycle is only able to make 1 association per contact, per run. So you'd have to run your CSV through Insycle multiple times to make multiple associations, but it would make the process of readying the CSV simpler. Insycle also allows you to create and associate the company record if no match is found, or assign association labels in bulk if you use those.
Additionally, once you have this setup, you can save your template so when you have to do this in the future, you just upload your CSV and everything is ready to go, saving you time if this is something you do consistently.
I just tested this out for you and found that it is possible. The key is having a row per contact and duplicating the email across multiple rows, then having a different company domain name per row. I ave included a sample excel file that I used on this post.