The biggest problem with constraints that I've seen has to do with the fact that data itself, in the real world, has this very annoying tendency to morph over time. That's in great part because programmers do not think in terms of resources that evolve but data structures that represent state that is most useful to them, something that strong typing in particular has reinforced. XML was a radical departure from that model - unlike databases, where type was intrinsic, atomic, and implicit to the implementation, and binary objects, which similarly placed constraints upon type for optimization, XML was extrinsically typed, in an advisory rather than compulsory fashion.
I think this is a lesson lost on many corporate developers who see XML only as an intermediation format from one strongly typed object to another (I've often wondered whether so much of the bad press that XML gained would have been spared if JSON had come out a few years earlier, and whether it would be JSON that would be villified as being too unwieldy as an object broker language, when the real culprit was the tendency for application developers to put too much of the business logic of an application, rather than more generic system logic, into heavyweight OOP in the first place).