Não tenho experiência com C#, mas em questão de arquitetura:
você tem que ver quais os pontos que nunca devem parar nos seus clientes, por ex:
Lojas não podem parar o caixa o resto pode ficar sem por até certo tempo, 1 ou 2 horas, já é o tempo da operadora restabelecer a internet.
Nesse caso seu sistema pode ser WEB com um módulo de PDV instalado nos caixas que servirão pra quando ficar sem internet.
Fábricas já são muitos pontos que não podem ficar parado.
Aqui você pode ter o sistema WEB, e caso o cliente não queira correr o risco de ficar sem sistema, ele coloca servidor interno.
Nos dois casos ainda o cliente pode ter 2 link de internet de operadoras diferentes, diminuindo assim a chance de ficar sem sistema caso ele não queira investir em servidor interno.
São sugestões minhas, e já trabalhei em sistema grande que funciona dessa maneira.
Caso não se aplique favor desconsiderar.
A parte desktop se for apenas o PDV por exemplo ou qualquer outra pequena parte do software, você não precisa se preocupar TANTO com as licenças pois o cara não vai parar de te pagar e ficar só com o PDV porque ele não teria como cadastrar produtos, verificar financeiro, fiscal, compras, etc…
E na parte de manutenção você tem quer criar apenas pequenas partes do software offline pra aliviar isso.
E quanto instalação você pode cobrar isso, depende do seu plano de negócio.
Programar pra desktop em java eu já fiz e não tive dificuldade em nada, telas complexas, relatórios, web cam, nfe, etc. Acho que aqui vai depender de você e de sua equipe.