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.