Sometimes people talk about hard-coded limitations thinking it's like if you knew some password you could have a game with 50 factions in it or something.

Adding any more factions would mean changes everywhere in the programming, because those faction and culture names are everywhere. Lots and lots of new code would have to be written to add to that, and that means access to the source code (C/C++ or whatever). A lot of the hard-coded limitations are that way. That's why for BI they say they've made it so a faction can change its culture. That was probably far easier than adding any new cultures or factions. The province limit is probably the same way. Pathfinding is easier with a finite number of nodes. Once the decision was made on these things during the design phase, there was no going back and changing it for an expansion.

However, certain other things might be less complex. If something has been set to have a maximum value, like generals can only have 15 hit points, maybe that's just one line in the code:
Code:
MAX_GENERAL_HP = 15
or something like that. That would be much easier to change than the number of factions. But those aren't the kind of limitations most people care about seeing lifted.