There's a view that programmers are code monkeys. If looked at from the perspective of a manager within the manufacturing industry (Many of Canada's high net worth individuals, especially in my city, have some sort of manufacturing/hard goods background) programmers are high level production staff.
As a result the jobs generally aren't very exciting and don't pay much. Mechanical Engineers are more sought after in my city, at least.
Six figure jobs seem to be within smaller boutique firms and a few of the big companies but it is far from the norm and there aren't many of those to choose from. Programmers earning more than $150k are virtually unheard of, as far as I know. My knowledge could be inaccurate here though so please take it with a grain of salt.
To change it would mean more jobs of a different nature. Startups are the only solution I currently see to change that long-term. And we have many other issues to contend with beyond a smaller talent pool and scarce funding.
I think it'll take a few big wins by a few entrepreneurs with, as my lawyer likes to put it: "balls of steel", to be willing to stay in their local Canadian markets for there to be progress in making this a better place for software engineers and in turn, other startups.
I am starting to notice a slight change and some locals urging me to stay local. Perhaps there's hope for the future.
So to try and succinctly answer the question, I think the pay reflects how interesting the jobs are, unfortunately.