Can you define what you mean by "a modern CMS"? Any database driven system will face similar problems when using Git source control. This isn't specifically an ExpressionEngine problem. The only systems that wouldn't suffer this difficulty are those using flat file architecture.
I often use Git with ExpressionEngine. The only possible sticking point being, as you point out, the database.
I create a folder for database backups above my site root. Backups run either manually or by using something like BackupPro(ish) - automated via Cron. This means that the database is available in the repository.
I also use DeployHQ to deploy from the repository to the staging/production servers. The database is imported manually after deployment. This could be automated via a Bash script that runs as part of the deployment process.
There is also a wealth of useful info in this thread ExpressionEngine and GIT Process