Haven't there been periods where the difficulty went down?
It doesn't happen that often.
However, I meant total PoW for the chain. This is the sum of the PoW for all blocks from the genesis block to the last block in the chain. That always increases and even if a new main chain takes over, by definition, it has more PoW.
The spam DoS attack was to create 2015 difficulty 1 blocks that are 1MB each. You can create as many of those as you want and they are valid forks of the chain, so are stored.
If only forks with lots of total PoW are stored, then that is less of a problem, since those blocks require high PoW.
With a 51% attack, you could drop the difficulty back to 1, so there is still some risk. However, by dropping checkpoints, you are inherently assuming that is no possible.
Yup, I just mentally corrected TierNolan's proposal to match ones made by many people before have a minimum total chain work checkpoint (e.g. any valid chain will have at least 2^70 work by height XXX). That allows the same protection from spamming as the current stuff.
That is what I meant by MAIN_CHAIN_MIN_POW, it would be the minimum total work before a chain can be called the main chain.