Unfortunately, the group attribute does pretty much what the documentation says. If the head and tail nodes of an edge have the same group value, dot will try to make the edge more vertical and try harder to avoid edge crossings. It only has effect on non-flat edges, so for this to have some effect in the second variant, the q0 and q2 would need the same group, as would q1 and q3. As a simple example, in the dot layout of the graph
digraph {
a [group=1]
c // [group=1]
a -> {c d}
b -> b1 -> c
b -> b2 -> d
a -> a2 -> d
}
the edge a->c curves and has a crossing, but if you unquote the attribute on node c and layout the graph again, you’ll see that the edge a->c is straight, short, vertical and has no crossings.
As with various of the attributes, if used too much, the constraints can begin to conflict with each other and give unexpected results.