SIGTERM Shuts down the process but waits until all current requests are fulfilled. If the process has received 3 of these signals and requests are still pending, a shutdown is forced.
But even if there is no outstanding request, (e.g. just an open gpg-connect-agent client that is not making any requests), the agent doesn't shut down.
Contrast this with the behavior of gpg-agent when it is handling the KILLAGENT assuan command: in that case, it terminates cleanly even when there is a hanging gpg-connect-agent client.
I think the response to a SIGTERM should be the same behavior as responding to a KILLAGENT command, or at least we need a much clearer explanation of why someone might want one or the other.