To run the job with tags is easy, I’m sure you can already give something like:
<command> --tags <tags>
Or however you are doing it.
The trick would be specifying the device. For that you would have to overwrite the capabilities, or provide the different capabilities with the --default-capabilities flag and a json argument:
https://appium.io/docs/en/writing-running-appium/default-capabilities-arg/index.html
Changing the capabilities at runtime should provide you the flexibility that you are looking for. Once you’ve set capabilities to the proper device, giving the cucumber tag should be very simple.