How do you know what version you have deployed unless you copy everything you deploy to some archive somewhere?
How do you roll back?
How do you find out if you monkey-patched something?
Deploying Docker images or static binaries is vastly superior and no more difficult. It's just a new paradigm.
All three of the issues you raise would be solved by involving a VCS somewhere in your FTP deployment.
Incidentally, claiming that either option is "no more difficult" than FTP upload or even using VCS is either disingenuous or at least a little blinkered. FTP can work as simply as copying files between "folders", I've successfully taught my non-techy parents to use FTP. Setting up docker images or static binaries requires significantly more understanding of what's going on but of course provide speed, consistency and scalability benefits.
Containers definitely has its place, but there hundred of thousands problems out there that needs to be solved for a low cost, otherwise it will never be solved, and a container will just increase that cost with little or no gain for the customer.
Many small businesses just want to get online, how does PHP help them? Actually it doesn't.
Small businesses use Wix, Shopify, Medium. Anything that prevents them from having to worry about code.