RESTful Web Services seems to favor temporary redirects for canonicalization. They give an example of search queries as non-canonical URIs that redirect to search results. In that context, it makes a lot of sense to treat canonicalization as a temporary redirect because we expect search results to change over time.
In case someone is looking for cacheable permanent redirects take a look at the draft standard for 308 Permanent Redirect. This allows you to pick between temporary vs permanent redirection, cacheable vs non-cacheable. Use whatever makes sense for your use-case.