I realize there are some exceptions to this, Eyemouth is in the north for example. But the vast majority of "mouth" suffixes are in the south. Is there a linguistic reason for this? Thanks
The 'Mouth' element in those towns is because they're at the rivermouth, the Bourne, the Plym and so on, while Portsmouth is the mouth of the Harbour, Portus in Latin. Hartlepool is named for a freshwater pool that Stags, Harts, drank at while Blackpool is named for the pool of black bogwater that was visible on the sea from where a bogstream reached the sea. Dublin actually has the same etymology. Liverpool is a muddy creek, so they're not named for being on the rivermouth. None of those three are really at a rivermouth, the Mersey at Liverpool being an estuary with the second highest tidal range in Britain.
So, is this just chance and geology? Maybe, but there is a distinct North-South divide in English, the language not just culture. There's the famous vowel shift from long vowels in the South to short vowels in the North, and the history of the language in either half is quite different. Obviously it's more complicated than clear dividing lines and two homogeneous regions, but it's a useful division.
The geography of English is quite distinct, going all the way back to the Angles, Saxons and Jutes. The South is pretty Saxon, Wessex, Sussex and Essex being the West South and East Saxons. The Jutes were basically Kent and the Isle of Wight, so less relevant to this. Northern England and the Midlands was more Anglish, East Anglia being pretty clear, but Northumbria and Mercia were also largely Angles. This Angle/Saxon split then got another layer laid on top of it with the Danelaw.
When the various Norse invaders came, they conquered Northumbria and East Anglia, but Wessex under King Alfred managed to hold them back, and an agreement was reached that half of England, some of it along Watling Street, a Roman Road but roughly from the Thames to the Mersey. Mercia was split in half, and Saxon Mercia was very much under West Saxon control. Alfred's descendants managed to extend West Saxon rule to the point where his Grandson Aethelstan became the first King of the English. Old Norse had a pretty strong impact on the evolution of the language, so a significant amount of the dialect differences traces back to this different history. York for example was Eoferwic in Anglo- Saxon but Jorvik in Danish. The suffix -by is also Danish, so another Northern port, Grimsby shows that influence more clearly. Skipton for example is a norsification of Shipton, or Sheep farm, so the Norse Influence on place names is more often changing the pronunciation of the same root than a complete renaming.
So, to recap, the etymologies of the ports that you mentioned are quite different, in part because the geographies are different. There is however an interesting history of linguistic differences that did cause different place-naming traditions, and renaming, and that is shown more clearly in other Northern placenames.