As to why this is, I've heard a number of theories. One is that people used to be less prudish and this kind of talk was much more commonplace back in the day. Also that the culture up north is more conducive to crude language. It's also possible that when these areas were being surveyed, the locals made some of these names up just to mess with the likely southern officials sent to talk to them.
Also I've heard that this is why there are so many lakes named "Holy lake" ("pyhäjärvi") - at some point, enough was enough and the officials just stopped accepting the local names. True or not, who knows.
There are some good place names too, like "Shitterton", "Cockermouth", and "Bell End". Only Shitterton is intentional, though. It does literally mean "town near the place where you have a poo"
Jewsons, a builders merchant in the UK did a brilliant take on this in one of their adverts.