In the case of using a 'match pattern', execution will require to determine all 'group' nodes attached to the 'user' node and capture them for output. In the case of using an 'exists' predicate, all that is required by the execution is to find the existence of just one relationships to a 'group' node. The search can stop after finding the first relationship to a 'group' node. The output is also simpler, as on the 'user' node will be returned, while in the 'match pattern' approach, a row for each 'group' node will be returned.
considering you are just interested in the existence of the relationship, and not the 'relationship' nor 'group' properties, the 'match/exists' approach meets your needs and seems more efficient.