While not a direct answer as to the exact cause, %D%M%Y isn't exactly well-defined, the way %D/%M/%Y would be, when it comes to deciding how many digits to eat for each part. If %2D%2M%Y was legal Calendar.parse formatting, it would be well-defined and be guaranteed to have at most one valid interpretation. (A patch that adds something like that would probably be well received.)
Until then, it's probably best to do that bit with sscanf, which does have this feature already.
Coming up with more properly organized refdocs for modules with as much magic business going on behind the scenes as the Calendar module is a challenge nobody has quite taken on yet, I think. It is probably doable, but probably also takes some work.