The point is that it is one thing to show that two mathematical objects are isomorphic; it is another (stronger) thing to give a particular isomorphism between them. A rather concrete instance of this is in combinatorics, where if $(A_n)$ and $(B_n)$ are two families of finite sets, one could show that $\# A_n = \# B_n$ by finding formulas for both sides and showing they are equal, but it is preferred to find an actual family of bijections $f_n: A_n \rightarrow B_n$. This is not just a matter of fastidiousness or a general belief that constructive proofs are better. When considering functorialities between various isomorphic objects, the choice of isomorphism matters. For instance, often one wants to put various isomorphic objects into a diagram and know that the diagram commutes: this of course depends on the choice of isomorphism. In the case of class field theory, these functorialities take the form of maps between the abelianized Galois groups / norm cokernel groups / idele class groups of different fields. The isomorphisms of class field theory can be shown to be the unique ones which satisfy various functoriality properties (and some "normalizations" involving Frobenius elements), and this uniqueness is often just as useful in the applications of CFT as the existence statements. All of this, by the way, is explained quite explicitly in Milne's (excellent) notes: you just have to read a bit further. See for instance Theorem 1.1 on page 20: "There exists a unique homomorphism...with the following properties [involving Frobenius automorphisms and functoriality]..." As a final remark: it is important to note that the word "canonical" in mathematics does not have a canonical meaning. To say that two objects are canonically isomorphic requires further explanation (as e.g. in the Theorem I mentioned above). Even the "unique isomorphisms" that one gets from universal mapping problems are not unique full-stop [generally!]; they are the unique isomorphisms satisfying some particular property.