I personally prefer the "area of shapes in a plane" model. The sample space is a rectangle with area 1. Events are shapes inside the sample space, with probability equal to the % of the area of the sample space covered. The probability of intersection of two events is the area of the intersection of their corresponding shapes, and likewise for unions.
Conditioning on B is like treating B as the whole sample space. So what's the conditional probability of A given B? It's just the % of B that is covered by A. How much of B is covered by A? Of course, that's just the intersection of A and B. Then we divide by B to rescale that area relative to B, rather than the original sample space.
This "group by" model says something similar of course, but the "area of shapes" model I think covers a more general case while also being a literal mental picture that just about anyone can hold in their head.