What about this scenario...
As you state, the purchase of product B is allowed only on the purchase of product A.
Today I purchase Product A, but decide not to purchase product B at this time.
3 months later, I see a need for product B.
I already have product A (3 months ago), so I only need to purchase product B this time.
But your shop makes it conditional that I have product A selected before I can select product B...
To get round this, you would have to have some way of getting ZC to look through the customer's order history and if there was a successful purchase of product A at any time in the past, then product B could be ordered.
An attribute system would not address this scenario.