No, Maya only uses one core for non-rendering processes, but that doesn't seem like your problem. How big/complex is your file if it takes 12GB of RAM?
I doubt it's the software's fault. As I've said many times, what you're doing is very processor-intensive; and only some operations can use multiple cores at once. I could go into the computer science reason behind this, but it would take a very long time. (If you ever get around to playing with the C++ API, you'll see there's a tonne of commands that need to run just to do a simple operation) Also NURBS take up a lot of processing time, as the interpolations between the CV's need to be calculated per-refresh.
Expressions are also inherently slow, as I've said before; as they need to be evaluated each time you change the time slider, and some other operations. Switching these expressions over to utility nodes may help. (They are also multi-threaded I believe)
What you need to realize, is that Maya is not always fast. The more stuff you throw at it, the slower it will be. It's not a problem with the software, but computation in general.
Every time you move your viewport, create a new object, or do anything in the viewport; it has to redraw, and therefore recalculate a lot of information.