I must be missing the context. The git checkout for a job happens on an agent, not on the controller. Usually, the agent is only performing a single job before it exits. I assumed that the message about being unable to create a new native thread was being reported by the agent, not by the controller. Is the message happening on the agent or on the controller?
My suggestion to disable the performance optimization was offered just in case the git plugin was ignoring the fact that you have not enabled JGit. Switching to JGit on the controller will switch from forking a separate git process to instead perform the git operations inside the Jenkins process (controller or agent, as required by the context). We found in performance testing that it was faster to use JGit with small repositories and to use CLI git with large repositories. Your mileage may vary (as it does in almost all performance related topics).
I have no ideas to offer. I don't know why chanjetsdp suggested downgrading to git client plugin 3.7.0. There have been changes since git client plugin 3.7.0 (new versions of JGit, enhancements to support automatic selection of git version for best performance), but none that would make me suspect it somehow has significantly altered memory use.
If the log file reports that JGit is being used instead of command line git, then you might try disabling the git plugin performance improvements that are based on repository size. That would force it to always use command line git even if it recognized that JGit would be faster due to the small size of the repository.