This is a case I encountered recently, and I struggled with for a while. To keep things quick – I was working with a fairly baroque faceted navigation which had attracted a substantial amount of external links to category URLs containing tracking parameters.
The canonical tag was holding everything together link equity wise, but the crawl inefficiency was staggeringly bad. While we could use robots.txt directives, this would likely kill the site’s organic performance – no crawl, no canonical, no value passing external links.