Because SSH operates on an application level, only traffic from your applications gets encrypted.
Thus the quotes around "VPN" above. I'm not trying to tell you to use SSH instead of IPsec or Wireguard. It's simply a useful tool to have in your pocket when you only need a small number of ports to be securely forwarded through the firewall. One short command, and with pre-configuration in ~/.ssh/config, it's even shorter. Tell me that's not valuable to know.
a VPN connection automatically encrypts all your traffic
Some do by default, but that practice isn't universal, nor is it always wanted. Tell me again how great it is to run everything through the VPN when I'm trying to copy a file from my local NAS to a host on the remote side. Thus
this question.
SSH uses the only TCP, which makes it easy for ISPs and servers to detect its traffic
ISPs can't detect IPsec?
OpenVPN (which is TCP-based) isn't a VPN?
This feels like gate-keeping to me. Needless quibbling over what a "VPN" is or must be. What it needs to be is what the user needs it to be, no more, no less.
It doesn’t have protection against DNS leaks.
I'm pretty sure OP isn't worried if "localhost" leaks. 😉