You are correct in how Gregorio builds the ledger lines and notes.
For example: `CBA` Gregorio will draw C, then the ledger for B, then B, then ledger for A, then A. (ledger for a overlapping on note b)
A construction like `ab//bc` will be drawn in the order of: ledger for a, a, ledger for b, b, [space], ledger for b, b, c. SO depending on the [space] distance the second ledger for b may overlap the note b in ab.
I cannot find a good solution at the moment. You can suppress ledger lines with [ull:0]. How are you making the custom ledger lines? I cannot find the documentation for those.