One of the biggest problems with building a CMS is how much control to give users over the design of any particular page.
WordPress, for example, gives very little control to the end user. There are styles set up in the css for paragraphs, lists, block-quotes and the like. Basically only giving structural control of the content to the user.
This is safe and simple and limits user contribution to content only and it doesn’t matter what they do, the way it will look is predetermined.
At a previous job for a major university, I came across a content management system that gave its user a lot of control. Essentially it used TinyMCE, a WYSIWYG editor created with JavaScript to give the user a format they were more familiar with. Specifically it emulates something like Microsoft Word so that the concept leap from writing a document to creating web-based content was manageable.
In a commercial situation, sometimes the client wants to have more control over their content. Maybe they can think of all sorts of reasons to need to create a different looking page beyond just adding words and pictures. Giving the client the power to manipulate the design of the website through the content manager is simultaneously helpful and dangerous.
I’ve seen pages royally screwed up by people who had no idea what they were doing and had no concept of how to work within the limitations of the visual editor. Anyone who’s worked at the help-desk of a company with a similar product knows how hard it can be to explain CSS to someone who has no idea over the phone. It just shouldn’t need to be done.
There are great business cases for giving control and reducing it. In either case, though, problems will always be avoided or at least easily explained away by providing documentation and training. If the user knows what they’re in for, the freedoms and the limitations, then whatever system it is can be used efficiently and effectively.