Its not strictly a limit, its to do with 'bitwise functions'.
Each object (and in this case its properties) is stored in RAM as a binary string like this;-
0010100101001010
Each digit represents a property of the object, and some of those digits represent possible upgrade options. Where the digit is '1', the object has that property. Where the digit is '0' it doesnt. When you upgrade an object, you change the digit from '0' to '1'. Removing the upgrade changes the digit to '0'.
In programming terms, you take the binary string and perform a 'bitwise logical OR' on it. So, if the upgrade for 'extra armor' is this;-
0000000000000001
...and your object properties is this;-
0000000000101010
...then a logical OR will produce this;-
0000000000101011
... in other words, your object properties now gain the 'extra armor'.
Theres the programming lesson over with, what that means is that theres only so many possible combinations with which you can perform those functions in Zero Hour because of the way in which upgrades are stored as binary strings - and that limit is 128 (7 bits).
In simple terms - you cant have more than 128 but now you know why
