At first glances:
Could seem roughly the same, though there are some subtle differences.
Normative as opposed to informative or simply non-normative is used to express the standard defined way of doing something. This concept is used everywhere in http://www.w3.org/ specifications.
Idiomatic is largely about convention and style.
Instead of saying, this function block “adheres to commonly accepted style”, you can abbreviate this statement simply to ‘idiomatic’. The word “idiomatic” is commonly used in texts at http://golang.org/.
Canonical is the prescriptive, reproducible way of doing something. A good example is XML canonicalization.