From the outset, what actually costs money is the (telephone) network. But people were often reluctant to pay the true cost of access to the network at first - so for a long period the providers charged for calls. After all if the average person receives 100+ minutes of incoming calls per month, but is only willing to pay you $15 for the network access which you want $25 for, you can take their $15 and then charge 10 cents per minute for calls to get the same net revenue...
In the US in particular the government regulators allowed operating companies to significantly overcharge for long distance in order to subsidise local calls. This creates market distortion which was judged worth it to facilitate widespread rollout of telephony. They probably should have reined it in much earlier, but hey, the basic idea worked.
Luckily this is mostly behind us, almost all providers offer Canada-wide as a standard feature. Canada+US is becoming the common default.
Of course the problem with this system is that you need to worry about what plan the caller has. So if you want to be very sure that locals can call without paying long-distance rates it is still best to get a local number. But I think that in almost all cases the need for this has passed.