nice and ionice: which one should come first?

If nice caused lots of I/O, you would want to do:

ionice -c 3 nice ...

so that the impact of the I/O would be minimized.

Conversely, if ionice performed lots of computation, you would want to do

nice -n 19 ionice ...

to minimize its CPU impact.

But neither of these is true, they're both very simple commands (they just make a system call to change a process parameter, then execute the command). So the difference should be negligible.

And just to be complete, if both were true, you can't really win -- the impact of one of them can't be reduced.

There is no practical difference between the two.