I wouldn't quite phrase it that way. A/P is definitely not an SMB thing. It's just an architectural choice. An active / passive (A/P) array is designed specifically for fault tolerance. For each volume or LUN being served, the active controller provides IO while the passive controller is simply waiting for a failure or maintenance activity to take over. You could also serve multiple volumes / LUNs and make one controller active for a subset and the other controller active for the remaining subset. If you choose to do this, you should ensure that the controllers do not exceed 100% of combined available IO capacity or there will be a performance degradation in the event of a failure.
The same holds true for active / active (A/A) arrays, except you can use both controllers to serve IO to a single volume or LUN simultaneously without thrashing issues. If you exceed 100% of the combined available IO capacity on your controllers, and one fails, you will suffer performance degradation.
For example, if you run both controllers at 80% of its maximum capabilities, you're running at a total of 160% of what a single controller can serve. It doesn't matter how the controllers are configured (A/A vs A/P). You can think of this like a car analogy - imagine driving your car at top speed down a two lane highway with another car beside you. If his lane goes away, he'll have to drive in your lane - which means one of you will need to slow down to let the other into the surviving lane.