I think after all that A is better.
The reason is that, in the mission scripts, you can make the chain start from an advanced point, as the game progresses, and it will still upgrade from there.
Example:
missionScripts:
- type: alienBase
missionWeights:
0:
STR_BASE0: 100
2:
STR_BASE1: 100
4:
STR_BASE2: 100
alienDeployments:
- type: STR_BASE_2
alienBaseUpgrades:
0:
STR_BASE_2: 100
2:
STR_BASE_3: 100
data:
...
From month 4 missionScripts spawns BASE_2 bases directly, but the progression to BASE_3 still happens because it is directly defined for BASE_2; if the upgrades were defined only on BASE_0, I guess the progression wouldn't happen if you start from BASE_2.
Sure there is some duplicate data, but it matters little.