I might be wrong, but I don't suspect that forex plays a large part. The NHL has both a salary cap and a salary floor (the cap -$16M) denominated in USD. Further, between 2009 and just earlier this year, the CAD was at par or stronger than the USD for most of the time.
I looked at some data [1] which shows that CA teams have an average salary ~5% lower than their US counterparts. The 2 teams with the lowest salaries are American.
You are right that the Americans have all our best players though. More than 50% of NHL players are Canadian, followed by ~25% American, and ~8% Swedish.