This is more than I can put into comments, so I'm going to compose it as an answer to your question.
From what you've told us, it sounds as though the users with "Associated Portal User" Role are from accounts that are owned by Users from accounts with the Role of "ABC Partner User". From that, I'm going to infer that they're both from the ABC Partner Account. It also sounds from what you've said, particularly since you don't want them to see each other, that the other two Users who have roles of "Associated Portal Users" are from two different accounts that are owned by the ABC Partner Account. Would that be correct?
Going on that assumption, let me say first that permissions are controlled by profiles along with permission sets, the latter being something that's often applied to groups. Roles will have NO effect on visibility. In a Partner Community, Users are just that "Users". Anyone who isn't a Partner Community User is a Contact. If they're a member of the Partner Community, then they're a Partner Community User who will have both a Role and a Profile within the Community (if a Customer Community, they won't a Role, only a Profile). See Getting Started with Communities for more on the basics of how communities work and setting them up.
Ideally, in a Partner Community, any Users from accounts owned by a Partner would be added to the Community in a heirarchy. So, if you have the ABC Partner Account and they own BCA Plumbing along with AAA Refrigeration, those two accounts would be set up as child accounts of the ABC Partner Account. If done that way, when those users were created, they could be owned by the ABC Partner Account, the sharing on those USERS could be set to private, and they wouldn't see one another. The only Users who'd have permission to see them would be those in Roles above them at the ABC Partner Account.
I hope this is all making sense to you. You may also find more on this subject if you look in the Security Implementation Guide. There's an External Sharing model that can be configured for Users, Accounts, Contacts, etc in addition to an internal sharing model. In this type of situation, you'll likely want to impliment both models. There's also more information on this in Salesforce Help.
Feel free to comment under your original post if you have more questions or need clarification (you don't have the reputation to comment under this one, but can always coment under your own). You can also edit your original post with more details about the sharing model you're using.