It is correct to use the Group resource code, with a valueset different from the Kind of Group members GroupKind. For example to use a valueset of programs with which a group of patients is served.
Group.code has a binding strength of example. You're welcome to use any valueset you like there. (On the other hand Group.type has a 'required' binding, so you are limited to only the specified codes.)