Bem, isso pode ser uma discussão enorme, vou tentar dar alguns pontos rápidos em poucas palavras. Você pode comparar o software em sua lista dos pontos de vista da árvore:
1) Apresentações
Aqui, o já sugerido benchmark será seu melhor amigo, pelo menos para o WMS
2) Serviços oferecidos
Geralmente, você pode considerar quais serviços são oferecidos pelo software: esses serviços podem ser compatíveis com os padrões da web OGC (WMS, WFS, WCS, WPS, SOS, OCS ...) ou não.
O GeoServer oferece nativamente WMS, WCS e WFS (nos últimos dois é a implementação de referência). Também pode dar suporte ao WPS com uma extensão.
O MapServer oferece WMS, WFS, WCS e SOS, mas com relação ao GeoServer, ele não possui os recursos transacionais para o WFS (WFS-T). Em relação ao GeoServer, em muitos casos, possui menos sobrecarga de arquitetura (como funciona com o Apache httpd) e possui uma lista enorme de formatos de dados suportados via GDAL / OGR. Ele não possui uma interface Web administrativa agradável (como no GeoServer), mas os mapfiles podem ser facilmente modificados e personalizados via API shell ou mapscript.
O Mapnik é uma biblioteca poderosa que pode ser usada como WMS (e de acordo com os últimos benchmarks do FOSS4G 2010, seu desempenho é impressionante).
Existem outros softwares conhecidos que fornecem implementações para WPS (pyWPS, ZooProject, 52n WPS), para OCS (GeoNetwork) e ainda outros.
Se você considerar o MapFish, possivelmente precisará adicionar a lista GeoDjango e FeatureServer que não oferecem implementação padrão dos serviços da web GIS. O GeoNode é uma tentativa interessante de web2.0fy um SDI (isto é, com tag e material social).
Também dê uma olhada no novo garoto do bloco: TileMill, que é baseado principalmente no Mapnik, e é construído na estrutura node.js
3) Arquitetura
O GeoServer e o GeoNetwork são baseados em Java (portanto, eles exigem um mecanismo de servlet como o Tomcat).
O MapServer e o Mapnik são baseados em C e funcionam bem no Apache httpd.
Todos os outros softwares são baseados principalmente em Python, usando estruturas diferentes: o MapFish usa Pylons, GeoDjango e GeoNode usa Django, FeatureServer e pyWPS em Python puro. Todos eles podem ser executados em httpd via modPython ou WSGI ou como CGI.
Observe que quase todo esse software é baseado na biblioteca ubiquos GDAL (geralmente encontrada em software proprietário).