For quite a few versions now, it's been possible to edit the schema source and put occurrence constraints on a field. Nobody uses this, because it has no effect on the way a component is displayed, and if a user violates such a constraint, the error is just nasty: certainly not a user-oriented way of saying what's wrong.
It's common enough for a site design to dictate that, say, in a given place you can put up to three widgets, or whatever. It's a real shame that you can't really do much about this until render time. The same goes for other constraints like the length of a string, or a pattern restriction. All these things would be great to have, but there's no point unless the UI also understands these constraints and displays things appropriately.
Ideally, then we'd never need to show an end user a message about violating a schema restriction, as the UI would have made it impossible, but if it were necessary, we could also do with some user-friendly reporting about why exactly you can't save the component.