Ambos usam os mesmos componentes internos do kernel (subsistema de rastreamento de conexão).
Cabeçalho do xt_conntrack.c:
xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)
Então, eu diria que o módulo de estado é mais simples (e talvez menos propenso a erros). Também é mais longo no kernel. Conntrack do outro lado tem mais opções e recursos [1].
Minha chamada é usar o conntrack se você precisar de seus recursos, caso contrário, fique com o módulo de estado.
Questão semelhante no netfilter maillist.
[1] Bastante útil como "-m conntrack --ctstate DNAT -j MASQUERADE" roteamento / correção DNAT; -)