So, when you don't specify an explicit height on the parent, then there's no base height for the child's
max-height to be calculated from, so
max-height computes to
none, allowing the child to be as tall as possible. The only other constraint acting on the child now is the
max-width of its parent, and since the image itself is taller than it is wide, it overflows the container's height downwards, in order to maintain its aspect ratio while still being as large as possible overall.
When you do specify an explicit height for the parent, then the child knows it has to be at most 100% of that explicit height. That allows it to be constrained to the parent's height (while still maintaining its aspect ratio).