It's worth keeping in mind that Toronto, Montreal, and Vancouver consistently have below-average income levels and above-average unemployment rates, and this hasn't slowed their growth. There's a few reasons for this.
First, a lot of migration is driven by consumption, not employment. People move to places where they can have access to health care, education, a suitable place to live, low crime rates, livability, etc. They look for employment or start businesses once they arrive. This is the primary reason that Canada is attractive to immigrants who are willing to quit their jobs as doctors or engineers in their home countries and drive cabs in Canada.
To the extent that large cities provide better access to things like hospitals, schools, and universities, it's also why a lot of Canadians migrate to large cities. The "meds and eds" are the main drivers of urban growth.
The biggest cities attract the most growth, but not without limits. High rents and commute times are some of the consequences of rapid growth, which will push people to look for alternative places to live.
Finally, a lot of the work that needs to be done in the service-oriented economy must be done within cities, but not any city in particular. Businesses need need lawyers, accountants, airports, potential employees, etc, which can typically be accessed in any city of over 1 million people.
All of this basically means that there is a good chance that Calgary continues to grow with or without the oil industry. Hell, even Detroit's population has seen continual growth over the past 100 years for these very reasons (so long as you look at metro Detroit rather than the inner-city).