I'm sorry, but I need some help to understand. I've written C++ coding very infrequently. I've written batch files even less frequently. That puts me slightly above coding illiterate, but well below competent.
We start with the assumption that multiple core optimization can be done in all code. Even I know that is false. Interdependency in something like Sim City is so vital that slicing up bits of interaction would require more checks and balances to insure inter-operation than it would save. I envision this as a 6 cylinder car engine versus a 12 cylinder engine. Given double the cylinders you don't get double power, and the complexity of the fuel delivery system is exponentially greater due to strict timing requirements.
Let's throw that assumption out the window for a moment, and assume multi-threading is possible and the overhead to manage it is minimal. Why then isn't every program multi-threaded?
For a moment, think about the average computer user. They are capable of turning the machine on, will pay $100 per hour to have free AV and malware scans done at a PC repair place, and view tablet with surprising regard. These people won't spend $600 on a computer if they can get a $100 tablet to surf the web.
EA is a business. Despite your protests, they exist only to make a profit. Businesses that provide a service, but do not make a profit, close. Consumers dictate how businesses can make money, and influence decision making by whether or not they purchase goods/services. If consumers are happy, business thrives and makes money. In a perfect world every service has its price point. In the real world, business determines actions by projected profits.
How does this tie back? EA owns Maxis, and demands they make a profit. That profit is determined such that sales units*profit per unit-development costs=profit. Maxis projects sales based on previous versions, profit per unit is generally fixed, so they can find the maximum amount of money they can spend.
Let's be generous, and say Maxis has the budget (both money and time) for programming a multi-threaded engine. Why? A large chunk of the consumer base only has 2 cores, not to mention all the extra development resources could be invested in play testing, story telling, adding features, etc... Why would you throw that money at something that a substantial chunk of consumers might never utilize?
You've sighted BF3. That isn't Sim City. This statement is common sense, but you seem to not acknowledge it at all. The sales for BF3 were pretty much assured to dwarf Sim City. Niche games just can't have a huge budget (The studio that made Journey isn't doing so well, check the news). If you compare apples and oranges you generally don't get a cogent response.
Don't want to read. I can simplify this into one sentence. "If the money was there Maxis would have seen fit to investing in development of a multi-thread engine." Please note, I said Maxis. EA can eat a dick as far as I'm concerned, but they aren't to blame for this PERCEIVED issue. Hate EA for something that they are actually responsible for, the list keeps on growing.