You would typically make changes to their live base by having them add you as a collaborator to their base.
Airtable is not a real programming language where you can work on the code separately from the data.
Similarly, if you want to make changes to a completely different base than the one that they are using, then you would be responsible for figuring out how to get all of their data into that different database, which would be an extremely challenging thing to do.
So your best bet is to make live changes to their base, and make backups (i.e. snapshots) before & after you make changes to their base.
Truthfully, it really sucks to not be able to maintain a sandbox environment to conduct testing or UAT.
Even if it didn’t have the functionality to deploy metadata changes to a production environment, having a partial or full sandbox would be a huge lift off my shoulders when working in bases/workspaces that have an immense number of scripting and automations active at a given time.