Hmm, maybe I'm missing where it could get complicated. Programming wise, it makes sense in my head on how I can do it. Basically just some code that prompts a selection screen (similar to the Pantheon one) and whatever benefit you pick gets added to the Ziggurat. The only thing that I really see that could be complicated is if we have to have a separate instance of eah Ziggurat with the each bonus, and when the un-buffed Ziggurat is built the code just takes away that one and replaces it with the customised one.
Balance wise, thats the real question IMO. We would have to come up with a bunch (10-20) of bonuses that are neither OP or useless. Then, there is the question of what happens when the user builds a Ziggurat after theyve already selected all of the options already.
Gameplay wise, its really not that complicated. When you build a Ziggurat, you esentially pick a bonus for that specific city. So the entire empire doesnt get the bonus, just the tiles being worked by that city. It's the same system the base game uses for localised yields, such as a pasture being worked by a city with a stable VS a pasture in a different city without the stable. Each Ziggurat is a special building