Why does sqlexpress run on .\sqlexpress while mssqlserver runs on .\
"Why is it that sqlexpress runs on .\sqlexpress while mssqlserver just runs on .\?" 


Because SQL Server version 7 only supported one instance per server.  And when the ability to run multiple instances was introduced in SQL Server 2000 Microsoft has to figure out some way for clients to distinguish between the instances.

And back at that time connecting to SQL Server using protocols other than TCP/IP was still common, especially Named Pipes, so just using different ports wouldn't have worked.