I think, i had the same problem as you.
When dovecot runs lmtp, no user is logged in, so there is no user from which you can get groups. So i think, my solution is (not really sure, if this is right, it's a long time ago, i played around) this transport in exim for local delivery
dovecot_delivery: debug_print = "T: dovecot_delivery_pipe for $local_part@$domain translates to GET_LOCAL_MAIL" driver = pipe command = /usr/lib/dovecot/deliver -d "GET_LOCAL_MAIL" message_prefix = message_suffix = delivery_date_add envelope_to_add return_path_add log_output user = MAILUSER group = MAILUSER
I have a really sophisticated setup with ldap... so GET_LOCAL_MAIL and MAILUSER are makros which get the email-adress and the mailuser for the receiving emailadress.
GET_LOCAL_MAIL could be $local_part@$domain MAILUSER is vmail in my setup, the user who owns all mailboxes
/usr/lib/dovecot/deliver is an alternative for the lmtp-delivery.
HTH
Jakob