1. Heterogeneity/homogeneity of labour.
2. Tight/lose labour market.
I think Argument 1 is the weaker argument. There's a lot of fungibility between software roles. However, there's a higher learning cost. Moving to a new software company requires a few months before someone is close to full productivity. This in contrast between a painter moving from a Ford supplier to a GM supplier will likely close to full productivity within a few weeks. The cost (to the employer) is lower to rehire someone.
Argument 2 is the stronger argument, but may not be forever. In a tight labour market, I see very little need for unions. If the marginal worker can (and will) leave their position for a better position (pay, benefits, culture, etc), I see little need for unions. However, if the labour market for software engineers shifts in favor of businesses, this will change rapidly.
Also, their output is relatively easy to measure and stand arise.
This is not true for programmers, making standard pay increase for programmers less useful as a target. What would be measured? Hours in office? Commits? Lines of code?