SolrCmdDIstributor is using a thread executor that has no bounds on the number of threads it can create. Commit or busy activity on a replica can cause a small backup that leads to spikes of threads on the leader. They tend to spike up and then come back down. Since each thread eats memory, this can be very costly or cause an OOME: cant create new native thread.
One possible workaround is to lower the thread stack size - on many 64-bit platforms it defaults to 1mb...-Xss=128kb might be enough and might make the situation better. It's not a solution though.
As a fix, after discussing with Yonik, I've been working on limiting the number of threads to 8 x the number of hosts in the cluster as a start. Perhaps it will be overridable with config.