It seems somewhat wasteful to zip the PHP files and then unzip at the target.
Is there a way to do this through composer, or some sort of web or CLI install procedure?
You can't use composer here. But you should be able to use a git repo and pull the latest changes from there. However it doesn't take care of the SQL. So if you're installing things in your dev enviroment, it will not be installed on the production server.
If it's about modifying files, like template adjustements or extension development, then it will work fine.