CoC is built around the Microsoft Language Server. I wasn't able to get LSP working with Ale but perhaps things have changed since I switched.
It is possible that coc.vim can do better. But I can't imagine how much better it should have be.
this has been my experience too.
I was editing some prolog the other day, `:ALEInfo` recommended swipl. worked like a charm!
the linters covered are quite incredible: https://github.com/dense-analysis/ale/tree/master/ale_linter....
And if you read each integration file, they are quite small and comprehensible. I've never needed to add one myself, but I feel like I could if I wanted to.