Why is Magento 2.3 smart enough to know that the cache is invalid, but won't just auto-flush?
I'm not sure this can be answered by someone outside of the Magento product team. However, from a user standpoint, I'm not sure I'd want cache to auto flush whenever it is invalid. This would lead to a negative performance impact on a site as you'd potentially constantly be rebuilding your caches. The performance impact would be even greater anytime that the full page cache was invalidated. I'm content with the ability to manually refresh when needed, but that's just my opinion.
I have created an extension auto flush cache while you change the cms page, cms block, product or system config. If you like this you can download it here https://github.com/magepow/magento-2-auto-flush-cache