With Gitolite V3 or 'g3' and its VREF, it should be possible to implement those restrictions.
But the access you can manage is only for write-access.
If a user can clone a repo, he/she will have read-access to all the repo (as mentioned in "gitolite: allow to change only selelected files").
If you really want to limit read-access, you might try gitolite 'partial-copy'.
Few notes:
An access rule is like:
<permission> <zero or more refexes> = <one or more users/user groups>
<zero or more refexes> means your can combines refexes
That would give something like (not tested):
repo REPO
        RW+  master                     =   MAINTAINER
        -    master         VREF/NAME/A =   CONTRIBUTOR
        RW   master         VREF/NAME/B =   CONTRIBUTOR
        RW   personal/USER/ VREF/NAME/A =   CREATOR
        RW   personal/USER/ VREF/NAME/B =   CREATOR