If the multiple companies all use the same domain name, then it will be considered as one “Organization” by Asana - which is probably fine because if you house all work by all of the companies in that Organization, you’ll easily be able to see assigned tasks across all companies, a good thing.
So I would think you’d want to make each company be a Team within that Organization. That would mean, though, that you wouldn’t be able to use Teams as another hierarchy level within each company. If you do want to use teams within each company, you could just preface each team’s name with its company name.
Others here may have additional thoughts as well…