Canonical tags should always be used, even if you’re not aware of duplicate content issues. First of all, the link rel=”canonical” element is NOT a redirection method. Redirection is something totally different. If URL A redirects to URL B, when someone requests URL A, they will never even see the link rel=”canonical” element (or any other HTML) from URL A.
The reason most e-commerce sites use the link rel=”canonical” element to combat duplicate content issues is that they are poorly architected. Such sites typically use tons of query string parameters to pass around things like category IDs, sub-category IDs, product IDs, sorts, filters, colors, sizes, etc. which causes all types of duplicate content issues. The use of so many query string parameters makes it far too complex (virtually impossible) to be able to use 301 redirects to resolve such issues, so the only option is to use the link rel=”canonical” element, which by the way, is not always honored by Google & other search engines because it is a “suggestion”, not a directive. Using canonicals properly you can also ensure that your preferred version gets all the authority from links pointing to all the different versions of parameter URLs or landing pages with similar content. Many e-commerce sites do use a CMS that automatically sets self-referencing canonicals to all URLs, already taking in consideration that there are several dynamic URLs for every clean one. Sites can have both www.mydomain.com and mydomain.com active and HTTP and https versions of the same page. Ideally, these are 301-redirected to your canonical version. You can also use Google Webmaster Tools to tell Google your preference for indexing. Regardless, your canonical will indicate your preferred URL. Other than that many sites still think of a self-referencing canonical as a measure to prevent scrapers from duplicating the site telling Google they are the original source