What version control depends on what we're doing.

Plugin development, one repo for just the plugin we're developing.

Theme development , one repo for just the theme we're developing.

Full site development, one repo for the whole site with WP core and /uploads all ignored. We keep all plugins, including those from .org, in the repo. They're small, it's handy to roll them back on occasion. This usually encompasses a custom theme, at least a core functionality plugin, and then any other custom plugins we've separated from core functionality.

We don't use git submodules or subtrees. I've tried several times to get them working and they're were always breaking on me and I decided they are more hassle than they're worth for me. That could just be me not "doing it right", but again I judged it simply not worth it.

What I wish is that years ago WP adopted giving WP core it's own directory (a la WP Skeleton), it didn't, it probably never will... but that sure would make full site development under version control a lot neater.