Legalisms don't make for particularly hard contracts.
In the real world, I've found complexity is often caused by attempts to simplify the contract. Or perhaps to simplify its drafting.
The most common offender is the overuse of Definitions which are often Capitalised Definitions. Interestingly in code you might compare it to the use of a function (); except that in the real world you can't easily call a function - you physically have to flick back and forth between pages to understand what the contract means.
The other cause of complexity is when parts of the contract aren't written by lawyers, but by engineers or risk analysts. Which the lawyers will do to simplify their job. I've seen some of these contracts and after weeks I can't understand them. A judge interpreting this contract basically has to become an expert in the relevant subject area. I don't envy them.