It depends on where the person doing the search is located.
A .ca domain is a "country-code top level domain" (ccTLD). In that country, Canada in this case, it will compete very well with the .com domains. But for a search done from a location outside Canada, the .com will have a much better chance to rank.
Only some TLDs are considered international - com, org, net, int, info, biz, name and so on. A few that started out as country specific are also now treated as international - for example, me, tv and fm.
But most country domains, including .ca, are not treated as international.
But for a search done from a location outside Canada, the .com will have a much better chance to rank.
Yes, a better chance but it is possible to compete with a .ca in the US SERPS against .coms. However it is an uphill battle and it took me a few years to acomplish it. Helps if the domain is hosted inside the US and you have a ton of incoming links from US based .coms.
If I had to do it all over again I would definately grab both a .ca and a .com and target each country. Or use subdomains.
From my experience, there is no penalty for dupe content, but one will probably be chosen to represent the info over the others by Google eventually. Duplicate content in this instance shouldn't matter as you own the copies, so you don't mind - as long as one of them ranks!
If you make sure you host the .ca in Canada and the .com in the US (assuming thats where you primarily target it), logic suggests that Goog wil assign the relevance accordingly. It it were me I'd go for it.
The problem may not only be in the ranking algorithms, but also in getting new links. People from countries outside Canada may be more willing to link to a .com domain than a .ca domain, which they may consider a local venture, which makes building links from foreign countries and ranking outside Canada for a .ca domain more difficult.