Google's John Mueller said that using self-referential canonicals is a good way to clean up small SEO mistakes. He was asked about it on Reddit, about the difference between self-referential canonicals and normal canonicals.
When it comes to self-referential canonicals, John said "since you don't know how people link to your pages, a self-referential one helps to clean up small mistakes."
A normal canonical is in the format of link rel="canonical" href="b.html" and John said "if this is on a.html, then it's just a normal canonical (technically canonical link element), if it's on b.html, then it's a self-referential one."
John added "Since you don't know how people link to your pages, a self-referential one helps to clean up small mistakes. For example, if a link goes to b.html?utm=cheese , then usually the server just shows b.html, and a self-referential canonical link element there would then encourage search engines to just use "b.html" instead of "b.html?utm=cheese"."
You have to go with the cheese example here.
Also, a while back, John said self referential hreflang is optional but good practice.
Forum discussion at Reddit.
Note: This was pre-written and scheduled to be posted today, I am currently offline for Succos.