The visualization count of group members is calling MembershipFinder.findMembershipsMembers() to get a count of members. This counts memberships, not members, so that if a subject is a member via two different paths, it will be counted twice.
The member count on the group UI page is only accurate because it is looping through all the memberships and collating their associated subjects into a different set and counting the result. That solution is probably too resource-intensive to do for a large number of groups.
Using MembershipFinder.findMembers() is also inaccurate. The returned Set<Member>'s does return the unique set. But if query option retrieveCount is set, the count includes the duplicates.