Há, de facto, uma explicação para o uso de pelo (contração/crase da preposição por com o artigo/determinante definido o) a preceder o topónimo Porto e da preposição por a anteceder Lisboa.
Repare-se que, tal como dizemos «O Porto é a grande capital do Norte» e «Lisboa é a capital de Portugal», também a construção frásica difere nas frases apresentadas com referência a tais cidades: «O comboio passou pelo Porto» e «O comboio passou por Lisboa». Ora, tal situação deve-se ao facto de se utilizar o artigo/determinante definido a preceder o topónimo Porto (porque o nome próprio da cidade coincide com um nome comum: Porto – nome próprio de uma cidade – e porto – nome comum), o que não sucede com o topónimo Lisboa1.
Portanto, tudo depende da especificidade do topónimo (nome da localidade). Se o nome próprio da cidade coincidir com um nome comum, assume o determinante/artigo definido do nome comum («o Porto» e «o porto»), o que implica a ocorrência do determinante/artigo definido em estruturas com as preposições por [nas contrações/crases pelo(s) = por + o(s); pela(s) = por + a(s)] de [nas contrações/crases do(s) = de + o(s); da(s) = de + a(s)], em [nas contrações/crases no(s) = em + o(s); na(s) = em + a(s)] e a [nas contações/crases ao(s) = a + o(s); à(s) = a + a(s)]. É esta a razão pela qual se diz:
«Eu passei pelo Porto, pela Guarda e por Lisboa.»
«O João veio do Porto, e o José, de Leiria.»
«Ele vive no Porto, mas tem família na Guarda, na Madeira, nos Açores, em Lisboa e em Mafra.»
«Eles querem ir ao Porto, à Guarda, a Tavira e a Lisboa.»
1 Estes casos são assinalados por Cunha e Cintra, na sua Nova Gramática do Português Contemporâneo (Lisboa, Sá da Costa, 2003, p. 225), explicando-nos que a ocorrência de «grande número de nomes próprios que exigem obrigatoriamente o acompanhamento do artigo definido» se deve ao facto de «ser o nome próprio originariamente um substantivo comum, construído com o artigo», dando-nos como exemplos: «a Guarda» (Guarda, nome de cidade, e guarda, nome comum), «o Porto» (Porto, nome próprio de uma cidade, e porto, nome comum).