Eu acho que isso depende do projeto específico.
Por exemplo, se os diferentes domínios de negócios forem totalmente independentes um do outro, eu organizaria por domínio de negócios.
Mas se houver código compartilhado entre os domínios de negócios, ou melhor, os domínios de negócios são variantes diferentes da mesma base de código, então parece mais lógico organizar por domínio técnico. E se você usar qualquer tipo de linguagem orientada a objetos, provavelmente poderá subclassificar seus controladores genéricos, modelos etc. nos arquivos específicos da sua empresa para torná-los mais finos.
Também existe um caminho (dourado) entre os dois - retire o código compartilhado em seu próprio domínio e use-o em outros domínios. Isso fornece um layout otimizado, mas permite código compartilhado entre domínios de negócios.
Domain1 # This domain changes bits of standard MVC code
controllers
models
views
Domain2 # this domain only modifies views, all else is standard
views
Shared # Here is the better part of code base
controllers
models
views
PS. Eu acho que a maioria das estruturas se organiza por domínio técnico, apenas porque elas esperam que você misture domínios de negócios diferentes em um único projeto somente se você tiver código compartilhado e, caso contrário, criaria projetos separados.
EDITAR:
Por exemplo, suponha que haja um aplicativo Web que lide com o armazém de uma empresa. De forma genérica, isso pode se aplicar a muitas empresas, mas cada uma delas pode ter algumas especificidades que não são atendidas e as proíbe de comprar. Por exemplo, uma delas implantou tablets nas empilhadeiras e precisa de uma visualização especial para elas enquanto outra deseja para organizar itens em três níveis, em vez do padrão de dois.
É claro que você poderia elaborar o projeto para cada uma dessas empresas. Mas se a estrutura / linguagem permitir, você poderá usar subclasses ou plug-ins etc. para personalizar partes do projeto genérico de acordo com as necessidades de cada cliente e organizá-las nos layouts de Domínio Comercial.
Por exemplo, se um projeto genérico exportar para JSON apenas o próprio item, o Domain1 poderá subclassificar o controlador e exportar também problemas de entrega recentes.
E se você descobrir posteriormente que o Domínio1 tem um componente que também é válido para o Domínio2, você pode extrair a versão genérica para o Compartilhado.
Como você disse, muitas estruturas se organizam por domínio técnico e é isso que eu usei agora, apenas porque meu FW de escolha facilita isso. Mas com um pouco (ou muito) de graxa de cotovelo, acho que poderia reescrever os caminhos de inclusão para dar suporte ao layout do Business Domain também.