SOCKS4 is the first widely adopted version of the protocol. It suffers from a couple of problems which have been remedied in SOCKS4A and SOCKS5, namely:
It requires clients to know the IP address (e.g. 123.123.123.123) of the servers they want to connect to. This means, in most cases, that they must be able to resolve domain names.
There is no authentication. A client only requires a user-name to be able to access SOCKS4 services.
SOCKS4A is a simple extension to SOCKS4 which solves the former problem, but not the latter.