Why is the assumption in the max heapify procedure crucial to its implementation?
Heaps support several operations. Among them is the operation of extracting the maximal element. Heaps are constructed so that all supported operations have low complexity. In particular, in order for us to maintain the property that the maximal element is at the root after extracting the maximum, we need the left and right subtrees to be max-heaps as well.

There are other data structures which handle this differently, such as self-balancing binary trees, but these tend to be more complicated, and as a result slower in practice (even though they have the same asymptotic complexity).