Capital one cards charge fees; they (like most other CC's) don't disclose them on your monthly statement, it's in the fine print of the cardholder agreement. For that matter neither does your bank disclose you are paying the fee when you transact over the counter there. I think you will find that if you have a US$ transaction on the card, and you do the math, CapOne will have charged you 25-30 points (2.5-3%) above the posted exchange at the Bank of Canada site. I don't see any mention on their website of no foreign fees (and that would be a bit of a selling point!) for the Aspire but I only have their Cardholder Agreement for my regular CapOne Platinum (which certainly charges a fee).
And the US$ account mentioned above is not a strategy for avoiding fees unless you have a source of US$ income. A US$ account is a strategy for dollar cost averaging. If you are buying US$ at your bank to put in your US$ account or to pay your US$ Visa, you are paying a transaction fee to the bank on the exchange on top of the Forex. There are no fees once you convert to US$, but there is a fee when you convert. Some banks will give you a "preferred" rate/fee, but you are still paying extra on the exchange.
Where a US$ account could be helpful is where you can time the market and buy US dollars when the exchange is favorable and use them when the exchange is not. Of course many many people have gone broke trying to time markets longer term by jumping in and out (human nature generally has us buying and selling at the wrong time), but dollar cost averaging principles says in the long run you may come out ahead if you do this as a regular strategy (say transferring $100 per month over years).
The other way a US$ account can be helpful is if you have a source of US income. For instance, if I were to rent my timeshare to a US person, I could put their US payment in my US account with no fees. Then when I paid my maintenance fees to the US timeshare company, I could pay it of that US$ account with no fees. This could potentially save me 2 transactions fees a year, or about $50-60. Of course, if I were to rent my timeshare in the US, I could attract the interest of the IRS and open a whole other can of worms.
As someone who worked in the banking industry for years, I can tell you the banks will always get their money; you just have to figure out where in the transaction chain it is being charged. The most likely reason that Chase doesn't charge a fee on 3 of their cards is that as a US based bank they are floating millions per day back into US dollars, so having some of those dollars not convert saves them a little anyway.