Il problema è la matematica con i valori nulli e l'ordinamento con i valori nulli (controlla nell'opzione "NULLS LAST" per ignorare l'ordinamento predefinito che restituisce prima i null per un ordine decrescente).
Nel tuo caso, con i join esterni, se l'utente ha un sacco di commenti sull'articolo ma nessun commento sul forum, beh, 100 + null =null in Oracle Math. Quindi per far funzionare la matematica devi rendere null=0. È qui che entra in gioco NVL() (e ha anche il piacevole effetto collaterale di eliminare fastidiosi null dal set di risultati)!
SELECT u.id, u.username, (NVL(COUNT(a.id),0) + NVL(COUNT(f.id),0)) AS rank
FROM site_users u
LEFT JOIN site_articles_comments a ON a.user_id = u.id
LEFT JOIN site_forum_comments f ON f.user_id = u.id
GROUP BY u.username, u.id ORDER BY rank DESC LIMIT :l
Vedo che hai sia MySQL che Oracle nei tuoi tag:quanto sopra è per Oracle. Se per MYSQL usa invece COALESCE(COUNT(),0).