I have a client who is running 2 companies but is purchasing the same item. How do I set up the B2B site in such a way that they can select which billing entity will pick up the invoice for the item they have ordered?

There are a few ways to achieve this:

1)    Using Locations: Create two locations one for each location. If the user are not common in the company then you can assign location to the users in site user settings and then when the user is placing the orders they can choose correct location on the checkout page and place the order, once the order is placed you will be able to see which Billing location details in the order history, emails and reports.
2)    Adding codes for these address, you can use the Purchase order code functionality to add the special codes and then assign these codes to the user in Site User Settings, the user belonging to A company will have 'X' PO Code and user belonging to B company will have 'Y' PO code and when they will place the order the Purchase Order code is visible in order history, emails, reports etc.
3)    Creating two separate sites for both businesses: If you would like to keep them completely separate then just create a site for one office add all your products and categories and then duplicate the same site with all the products and categories and settings. This way both the companies can be separate. Please check our KB article on Site duplication to know more about duplication and which options gets duplicated and which options are not, here is the link: https://support.aleyant.com/kb/a280/ch_-066-duplicate-site.aspx