Is it simply a CPU-intensive activity, or is there more to it? Why can't more processing be offloaded on to the GPU?
Because Flash (used to) lack integration with the operating system and the graphics card's APIs that would allow it to do so. In order for the Flash plugin to defer decoding to the GPU, it needs to talk to the operating system, and subsequently to the graphics card to pass decoding and rendering instructions.
Flash 10.1 finally introduced GPU acceleration.
Here's the main culprit: OS X did allow Flash to access the GPU later on for decoding h.264 video, but their support wasn't that great. Because – simply put – Apple still hates Flash (lack of API support is for the same reasons they don't ever want Flash on a mobile device such as the iPhone or iPad). For GPU support in OS X also see this short Adobe knowledgebase entry.
Why it does not work on Linux yet, I personally don't know.
To answer your first question, I'll also cite Adobe itself. The main point is that modern video codecs such as h.264 are very very complicated to decode, and they stress CPUs a lot. If there's no API for GPU decoding, or bad support for it, you'll see high CPU usage, and there's not a lot you can do about it.