There are many software products which use this way of dual licensing. As long as the company wrote all the source code by themselves, they can license it in as many ways as they like.
Things get more complicated when strangers contribute new code to the open source version. This submission is usually exclusively licensed under the open source / copyleft license, so the company is not allowed to use it within their closed source premium version. To use it anyway, they have to either
- rewrite the new functionality from scratch
- pay (or otherwise convince) the contributor to license his code for closed-source usage
- recruit the contributor to work for them, improving the closed source version
- make the premium version open source / free software (but this is hardly possible while still forcing customers to pay for it)
I think the first three options are quite common. I recently read a really good book about it but I forgot the title, and as far as I remember there is no English version of that book available (only German).
EDIT: See this question and it's answers, they pretty much tackle the same problem: Make my failed Web application open source?