Essentially you can feed each Query Based Distribution Group two fields which determine who is a member or not.
You have an LDAP filter which can return objects (users / contacts) based on the criteria you define. And a search base that allows you to limit that.
The group can easily apply to more than one OU by changing the search base. However, your LDAP filter would then have to be restrictive enough to return only the users you're interested in (you can't search on OU within an LDAP filter).
I looked at query based distribution groups for a while and don't bother using them either. If I need a group to dynamically update membership I set-up a small script to do it. You have the hassle of maintaining the script, but a hell of a lot more flexibility with members.
Chris