Many thanks Andrew, it seems that somehow you are right, but in this sense strange things happen:
1. writing xterm or gnome-terminal rather than firefox results in "failed with code:1"
2. writing google-chrome rather than firefox correctly starts google-chrome and the generated disp2571 does not shutdown, so other tests are possible:
3. writing "qvm-run disp2571 firefox" correctly starts firefox
4. writing "qvm-run disp 2571 gnome-terminal" correctly starts gnome-terminal
So resuming why is it that this does not work:
$ qvm-run --dispvm=deb-10-java-dvm --service qubes.StartApp+firefox
but these work
$ qvm-run --dispvm=deb-10-java-dvm --service qubes.StartApp+google-chrome
$ qvm-run disp2571 firefox
Also why is it that, in Qubes Manager, if I write disp2571 in the search field, the result is that deb-10-java-dvm appears? Well they are related, but they are not the same thing: disp2571 is the disposable, while deb-10-java-dvm is the template that generates the disposable. The same happens using disposable template fedora-32-dvm that comes preinstalled with Qubes release 4.0. I remember that in the past (not sure which Qubes release) writing the disposable name in the search field of the Qubes Manager, then the correct disposable appeared and it was possible to use "run command in qube" to start additional applications in it, which is no longer possible from Qubes Manager.
Best
Franz