Why does controlling CPU frequency require root access? According to this answer one of the programs that requires root access is SetCPU that can lower the CPU frequency when the phone is not used thus prolong battery life.

I don't get one thing - why does that require root? What could be the harm in reducing the CPU frequency?
If have to disagree with Sparx, if you change the CPU frequency via the supported methods that every modern CPU provides, changing it, even in a fast sequence, doesn't affect stability. I would even rule out hardware damage, because of the sophisticated security mechanisms in modern CPUs (overheat protection, etc.). 

Why can only root set the frequency and the frequency governor? Well, first because it's Linux that only allows root to do so. Second, I think that it's because the average user shouldn't care about. It's the system that decides which frequency is the best in the current situation. It does so automatically, without user intervention and it does the job good under Android (IMHO). While thinks like SetCPU can prolong battery life, it also can shorten it, if it's done wrong. The question here is: Do you believe that a 3rd party App does better battery management than the one that the manufacturer of the device? In certain cases sure, but not always.