The old C style cast operator could obscure some errors, particularly when you are dealing with polymorphism. The new keywords are also more expressive. You have a much better idea of what the programmer intended when they used the cast. I guess it also fits into C++'s stronger typechecking paradigm too.
How is it "cleaner"? And I don't understand what you mean by that last sentence. How was the language lacking before these new reserved words? I didn't know of a way to screw up a program by casting to an undefined type. I thought that an error like that would be caught at compile time.