É difícil responder. Ambas as opções têm seus prós e contras na minha opinião.
Pessoalmente, não gosto de ler um único arquivo CSS ENORME, e mantê-lo é muito difícil. Por outro lado, dividi-lo causa solicitações HTTP extras que podem potencialmente atrasar as coisas.
Minha opinião seria uma das duas coisas.
1) Se você sabe que seu CSS NUNCA mudará depois que você o criar, eu criaria vários arquivos CSS no estágio de desenvolvimento (para facilitar a leitura) e os combinaria manualmente antes de ir ao ar (para reduzir solicitações de http)
2) Se você sabe que vai mudar seu CSS de vez em quando e precisa mantê-lo legível, eu criaria arquivos separados e usaria o código (desde que você esteja usando algum tipo de linguagem de programação) para combiná-los em tempo de construção do tempo de execução (a minificação / combinação do tempo de execução é um porco de recursos).
Com qualquer uma das opções, eu recomendo o armazenamento em cache no lado do cliente para reduzir ainda mais as solicitações HTTP.
Edição:
Encontrei este blog que mostra como combinar CSS em tempo de execução usando nada além de código. Vale a pena dar uma olhada (embora eu ainda não o tenha testado).
EDIÇÃO 2:
Decidi usar arquivos separados no meu tempo de design e um processo de compilação para minimizar e combinar. Dessa maneira, posso ter css separado (gerenciável) enquanto desenvolvo e um arquivo minificado monolítico adequado em tempo de execução. E ainda tenho meus arquivos estáticos e menos sobrecarga do sistema porque não estou fazendo compressão / minificação em tempo de execução.
nota: para os compradores por aí, sugiro o uso do bundler como parte do seu processo de criação. Esteja você construindo a partir do seu IDE ou de um script de construção, o empacotador pode ser executado no Windows via incluído exe
ou pode ser executado em qualquer máquina que já esteja executando o node.js.