Are there any problems associated with allowing a user to "define" or customize a ribbon in any fashion that they would like>? In other words, if we allow them to re-arrange the buttons etc, would that be a good design?
Yes, there are problems with allowing a user to customize a toolbar or Ribbon in any way that they would like, depending on your users and how this customization occurs.
Allowing customization can lead a team to not spend time considering what the best default toolbar should be. When discussing the toolbar layout, if the answer is always, "well, the user can always customize it", you're at risk for over-reliance on customization. Many users, possibly most, won't take the time to customize the toolbar. They will rely on the default toolbar. If your default toolbar isn't well-considered to meet most users' needs most of the time, then you are creating friction for your users.
The worst-case version of this is forcing the user to customize their toolbar. In this case, the user is likely overwhelmed with choice, and has not yet used the application enough to know how to customize it appropriately.
Another concern with customization is that your UI and my UI no longer look alike. If I ask you how to accomplish something, and you have customized your toolbar, something that might take me 10 clicks only takes you 2 clicks, and you won't be able to show me the 10-click method. That is, it can make it more difficult for users to share knowledge about the application with each other. This might be a concern if your users are in a highly collaborative environment, or it might not be a concern at all if your users are likely to be working on their own without a need to desire to share knowledge.
This doesn't mean that you shouldn't allow for customization. The question is whether your users actually need customization, and whether allowing customization is just a way for the team to not have to consider what users are really doing with your application.
For a complex application, with many actions which a user can choose to execute, this can be very beneficial. In this article Bloatware and the 80/20 Myth, our dear friend Joel Spolsky, argues that, while the 20% rule applies, the 20% is different for every user. Your customization option would let the user define the ribbons based on their individual 20%.
A lot of software developers are seduced by the old "80/20" rule. It seems to make a lot of sense: 80% of the people use 20% of the features. So you convince yourself that you only need to implement 20% of the features, and you can still sell 80% as many copies.
Unfortunately, it's never the same 20%. Everybody uses a different set of features.
While I don't normally reference Microsoft as a positive example, their implementation of toolbars and buttons in the Visual Studio product nicely follows this idea. Depending on what kind of development you are doing, there are very different sets of actions and requisite buttons that apply. This customizable model makes it very easy for me to setup toolbars for exactly the functionality I want.