Still not entirely sure how this happens but it is possible with cloud provided agents that the Computer is removed from Jenkins whilst the CHannel is still open.
This causes leaks of Threads and ultimately the death of Jenkins as it can not longer create threads. (2 threads are leaked for every agent provisioned - the "Channel Ping thread" and the "Channel Reader").
This only occurs if the cloud provider (a proprietary one in this case) was provisioning agents with > 1 executor. The provider updates the executors to remove them once they have been used but eventually when the agent is removed the channel as not been closed.
It is my understanding that Jenkins should close the channel when a node/computer is removed as it the case when the number of agents is 1.