For some reason, I find it easier to make hard-to-spot typos with DCGs … I find that using listing/1 to see how the DCG rules were translated to regular Prolog often helps in seeing those typos.
It should also be noted that DCGs are just a special case of accumulators and they’re not just restricted to strings (lists of character codes). You can also have multiple accumulators using the EDCG pack (which was originally developed to simplify compiler writing).
And if you want to go wild with DCG-style programming and various extensions, there’s the Logic Grammars book by Abramson and Dahl.