You're still missing the most important point; it's the coupling of the choices. The options on how to move that catapult to attack the city is nearly completely independent from your choices of how to defend a city on another front, what you're building in your capital, and whether or not your builder builds a mine or a farm on the opposite side of your civilization. And you get to do all of those things, not merely pick one.
There are lots of things to do, but the whole system breaks down into lots of small, simple, and mostly independent problems.
Chess is hard because those problems aren't independent.
That's where you are wrong again because you're thinking only about that catapult, but what about the 2 crossbowmen, the 3 knights and the 6 swordmen next to the catapult? They will need to move, their position is crucial to find the best path and the best way to attack. These are very dependent one to another because of the rule of 1UPT. Remove the 1UPT and I'm pretty sure the AI would gain a lot and now, each unit would be independent. But it's not the case because of the rule of 1UPT. Of course, in your example, they are independent, because you're talking about parts that don't work on the same level. The builder will never be blocked by the catapult and the city has nothing to get blocked.
However, moving the catapult, the 2 crossbowmen, the 3 knights and the 6 swordmen, that's a different story. What if the catapult, which is behind all the forces is, based on the algorithm, the first one to move. It cannot move in front of every unit. And what if, the algorithm has a trigger that says: "Melee units doesn't attack the city until the Ranged unit has hit the enemy city wall by at least 25%", the melee units will probably dance in front of the city, until the catapult gets in ranged and starts attacking. These are all dependant moves, yet the AI seems dump all the way, simply because the order of the units is crucial in his heuristic.
I'll keep this situation, with just those 12 units, if the move order is taken in consideration. For a AI to know which unit is better to move first, it will have to validate the move for each unit and go until there's no unit left, so that's 12! possibilities (12 unit moves, then 11 moves, then 10, etc. to get the number of possibilities, that's 12!), resulting 479001600 possible moves, just for that single turn, with just 12 units. Of course, more than half of these will be cut by the algorithm or because the unit cannot move, but that's still a lot of possibilities to check and that's simply to know the best move order. Also, I'm not counting every possible position on the grid for the move, it's a minimum of 7 tiles (one on each side with the option of staying on the same tile), then there's roads, fortify, fortify until heal, the option to upgrade or not, etc. Now, they will have to evaluate what the enemy(ies) can do, so it will probably evaluate based on 2 tiles within, that's still a tons of process only for 12 units for that single turn only. So I failed to see why you're telling that the system breaks down into lots of small and simple independent problems, since every units are to take in consideration.
Of course, I'm just speaking in theory, because who knows how Civ6 AI works? For sure, the AI designate a small force and group them when they are attacking, because most of the time, you see some unit staying behind doing nothing, so we can assume that Civ6 AI does some grouping to answer to the AI scheme.
There are such things if you program the AI that way. In fact, that's how a lot of AI's work -- an analysis module to evaluate the situation, a strategy module to make high level decisions on how to proceed, and implementation modules that carry out those decisions. IIRC, Civ 4's AI works that way. I presume Civ 6's AI does as well.
It's true that modern chess AI's don't work that way, but that's because, for chess, combinatorial search to optimize an evaluation heuristic has proven effective.
Well.. of course that how works a lot of AI, it's basically the definition of an AI. Every type of AI has to analyze and evaluate the situation, create a high level of decision and implement a modules to carry out. It can be the Alpha-Beta algorithm, the Ant-algorithms, the Differential evolution, the semi-supervised recognition algorithm, they all have to do this in order to analyze and evaluate the situation in order to create a high level of decision then apply it to a smaller scale.
But in all cases, it creates a decision tree that tries to find a winning situation, not just for chess, but for everything that uses AI algorithm. It may be an automatic wheelchair, but the AI will analyze data from cameras and sensors in order to find patterns and take the direction where there's the smaller chances to encounter an obstacle in the wanted direction. I know that because my AI teacher worked on that project.
So yeah, it might be neural networks, machine learning, genetic algorithm, etc. they will all provide a decision tree, even modern chess AI works that way, it will only be helped with some predefined decision stored in a database, but in the end, these database has been filled, but it's almost the same thing in the end. Let's not forget there's 288+ billion of different possition moves after 4 moves in chess, which is fairly smaller than the 479 billion moves from finding the order of moving 12 units...
Sorry but chess is way easier to code than a Civ6 AI because there's way more dependencies than you think, but they aren't all dependent, but there ia fair amount of dependencies.