The [gemhead] also controls the order of execution of chains while [separator] inherits that from the [gemhead]. One giant chain off a single [gemhead] with a bunch of [separator] will not give the same results as a bunch of different [gemhead] with explicit order of execution. There is some overhead with [separator] that can become non-trivial if enough of them are used (like in a loop).
One thing that helps is to always give each [gemhead] a value for render order. This will avoid, or at least help understand, many problems with how rendering occurs.