O PostgreSQL possui um limite de coluna entre 250 e 1600 "dependendo dos tipos de coluna" e suporta dados e consultas espaciais com a extensão PostGIS. Então, eu estaria inclinado a fazer duas coisas:
Primeiro, onde uma coluna representa uma categoria em vez de texto livre, crie uma tabela separada com essas categorias e substitua a coluna por um ID inteiro e restrição de chave estrangeira, referenciando a tabela de categoria.
Em segundo lugar, quebre a Terceira Forma Normal dividindo a grande mesa em duas ou mais, de alguma maneira lógica, e estabeleça um relacionamento individual entre elas. Talvez isso não seja o mais eficiente, mas se você raramente precisar de alguns dados, a consulta poderá estar apenas nas tabelas que você deseja.
Outra alternativa completamente diferente seria usar um banco de dados "NOSQL", como MongoDB, CouchDB e assim por diante. Não há limites físicos para o tamanho da "linha" e, se os dados não estiverem presentes em um registro, eles não precisarão ocupar espaço.
O suporte espacial não é tão bom para esses tipos de bancos de dados grandes, mas o MongoDB suporta consultas e dados espaciais em 2D, e o CouchDB parece ter uma funcionalidade semelhante.