Second, when there is a single developer, you can't blame him for doing whatever he wants: it's his sole work, nobody helped him, and he did gave his code. In the case of the CLA, the CLA exists because it's expected that several people will contribute, and they probably contribute because they want to help a free software project (with the exception of, in this case, Canonical paid developers). But then, you have more rights than all of the other developers, which is not only unfair to the user, but to the developers themselves.
On the Qt vs. Canonical situation, I don't like such a CLA at all, either.
On the other hand, the fact Canonical didn't make that closed source version yet, doesn't mean they won't, and chances are they have such intention: if it were to protect the project from being illegally used in closed source applications, they won't ask the right to sublicense, but the copyright (since they need to be the copyright holders for suing). They explicitly ask for the right to relicense and not the copyright, and guess what, they probably do that because they want to use that right to relicense.
And to readdress the point of the single developer, you can fix it by having multiple developers, which happens to be the case in most of the important projects.