Can you tell us more about the specifics of your use case. A few questions I have immediately:
Is this in Change, SR, another object?
Is your workflow being run multiple times?
Are there two layers of approval that could go to the same person?
Are the approvals going to individuals or contact groups?
request offering goes to Requester's manager - JOHN
Then goes to application owner - which happens to also be JOHN.
I get an email from JOHN "do I really need to approve this twice?!?"
or a change request:
Implementer approval is JOHN
Application SME approval is JOHN
JOHN is also a CAB member
That make sense?
I've seen other folks that have worked around this situation by building some boolean fields into the SR or change object that have business rules behind them to make them true when one of these situations exists.
So in your first example, a field called IsManagerAppOwner which has rules (in the request offering form designer) to mark it true when the two previous fields match. At that point you can use an IF block in your workflow that will skip one of the approvals when both of these match. Best practice would be to have that path make a note somewhere as to why it was skipped so you don't have to go digging in workflows when someone asks why there were fewer than the normal number of approvals.
For the 2nd case you could do something similar using editing rules in the Change business object to take care of the Implementer / App SME duplicate, however that won't help the situation with the CAB approval. I don't know of any way you can only send approvals only to certain members of the CAB group without reinventing the wheel and building your own logic for this.