If it's simply a lack of data, that should be easy to fix. Given an image caption, every other caption is a relevant negation: 'a photo of a happy dog' is also not 'a photo of a sad cat', and can be turned into the caption 'a photo of a happy dog and not a photo of a sad cat'. So lots of obvious data augmentation and synthetic data approaches to apply there to boost negation.
Besides that, we know it doesn't because models don't recurse because no matter how big they are, they still have constant execution times. And we gave up on systematically parsing text in favor of just vibing anyway (technical term).
That's just as well since most parsers didn't really work in practice; I think I vaguely remember one as kind of working (https://www.link.cs.cmu.edu/link/) but it can't handle bad grammar or misspellings like ML can.
But this version of Dall-E is not autoregressive, they've gone for diffusion models in the generator and for a single vector embedding (no internal spatial grid structure) for the encoder. That explains why it's bad at negations, counting and stacking coloured blocks. I believe these skills were not the top priority of OpenAI this time, they understandably went for pretty images.
If Dall-E took variable length sequences as inputs, its execution time would still be O(N) on the length of the sequence and it would still have a fixed amount of memory to work with. Whereas a computer program of length N can do pretty much anything, and a human given a description can go off and think about it.
https://langcog.stanford.edu/papers/NF-cogsci2013.pdf
Fun fact: Young Children also don't understand negation. There are some parenting theories claiming that is why one should use avoid negations in commands.