1. I’m not sure why JTT+UL3+G was the best-fit model, but a simple run with option "-m JTT+UL3+G”, IQ-TREE ignores +UL3 in the model string. Thus it is equivalent to -m JTT+G.
2. Likewise, if you do -m UL3+JTT+G, then IQ-TREE ignores +JTT, resulting in UL3+G model instead.
3. If you want to really do a 4-class mixture model, then you need to specify this:
iqtree -m 'MIX{JTT,Q1_UL3,Q2_UL3,Q3_UL3}+G' ...
Note that the model string must be rounded by quote.
For other combination: you can look at the line like this in the log file when running with -m JTT+UL3+G:
Model JTT+UL3+G is alias for JTT+MIX{Q1_UL3:0.484340397,Q2_UL3:0.492780514,Q3_UL3:1.15597274}+G
And then rename the model string the way I described above.