Often the home team is not favored at all. I might agree (I haven't checked the math) that ON AVERAGE the home teams takes 3 points, but every individual game is different. For example, if the Bombers were on the road in Ottawa would you make Ottawa a 3 pt fave just because they were at home? Of course not. 
We all know that home teams with their home crowds do have an advantage, and the bettors know of this advantage and bet accordingly, which in turn leads to the house factoring that into their initial line but it is only one factor of many.
And at this point I must point out that now that I look at it, the line on cfl.ca is Sask +1, which means that CALGARY is actually favored. Sask +1 means that for betting purposes Sask gets a 1 pt head start. Listing Calgary as -1 is the same thing. It means that Calgary has to win by 2 or more for Calgary to win the bet.
All the big betting houses have a couple of experts who set the initial lines before any betting starts and they are very very good at predicting how many points that it will take to get the money to come in evenly on either side of their line, so good in fact that half the time the initial line doesn't even move the whole week before kickoff. However, sometimes they are off by a point, or even half point, or sometimes mid-week news (star player pulls hammy in practice for instance) will affect the betting and so when they see the money start to lean 51% one way or the other, they change the line accordingly and Tampa -5 on Wednesday can become Tampa -6.5 by Sunday. Bets taken at -5 on Wed are still honored at -5 of course, but the money never strays very far from 50/50 on each team.
Let's do some math :rubs hands:
(love math!)
Now let's say that the house rake is 10%. That means that for every dollar wagered you win 1.90 (the house keeps a dime, or sometimes they make you pay an extra dime - a $1 bet will cost you $1.10) or you profit 90 cents. If you lose of course you lose it all. So to break even over time you have to win a few more bets than you lose.
Let's look at it from the house's point of view:
scenario A:
A million dollars (total of ALL bets taken) are bet on Sask +1 and another million is also bet on Calgary -1, a total of 2 million dollars bet combined, distributed 50/50 on each team.
- If Calgary wins by 2 or more, 1.9 million will be paid out in winnings on the 1M Calgary bets, while the million bet on Sask +1 will be kept by the house. That is a profit of $100,000 for the house.
- If Sask wins or even loses by just 1, the payout is 1.9 million and house profit is the 100k, all the same.
scenario B:
1.1 million is bet on Calgary-1 and 900k on Sask +1 ... still 2 million total bets combined, but distributed 55%/45%
- If Calgary FAILS to cover the +1 the payout is 1.71mill on the 900k, and the house keeps the 1.1mil bet on Calgary for a total profit of 290k! ... However ...
- If Calgary SUCCEEDS to cover the spread the payout on the 1.1M is 2.09M and the house keeps the 900k for A LOSS of 90k!
So the house knows that it will always make money if the betting is EVEN and that is why they set and move the lines to keep the money EVEN on both teams.
The house will never risk a loss.