Caixa pode e deveria ter um db pra cada unidade, o que faz o SQLite a púnica solução sensata (as outras funcionam também sem problemas). Uma hora de juntar tudo, que pode ou não acontecer de acordo com o sistema, mas vamos considerar que tenha que juntar, é só enfileirar e o SQLite não terá problema, mas é um caso que admito que o SQLite já não é perto de 99% de certeza que é a melhor solução. Se deseja já mandar tudo junto, dá também, para centenas de caixas operando juntos, mas pode ser que a pessoas tenha que saber fazer isso de forma correta, e outros DBs já estão preparados para isso.
O Firebird é bem interessante mas ele não tem algo que faça ele ser relevante no mercado, tanto que quase 100% do uso dele é em aplicações Delphi, ou seja, o motivo é o que tem mais à mão ali, não é um motivo técnico. Ele é pesado e tem mais problemas que o SQLite (sim, ele foi feito em uma época e por pessoas que não entendiam bem oque estavam fazendo e nunca foi corrigido, funciona em quase 100% das vez e isso está bom para alguns) e não tem todos os recursos que um MySQL ou PostgreSQL têm. Em muitos casos ele não casa bem com a linguagem que o operará porque ninguém fez um driver decente.