Problemet är matematik med nollor, och ordning med nollor (kolla in i alternativet "NULLS SIST" för att åsidosätta standardordningen som returnerar nollorna först för en fallande ordning).
I ditt fall, med de yttre anslutningarna, om användaren har massor av artikelkommentarer men inga forumkommentarer, ja, 100 + null =null i Oracle-matematik. Så för att få matematiken att fungera måste du göra null=0. Det är där NVL() kommer in (och har också den trevliga bieffekten att eliminera irriterande nollor från din resultatuppsättning)!
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
Jag ser att du har både MySQL och Oracle i dina taggar - ovanstående är för Oracle. Om för MYSQL använd COALESCE(COUNT(),0) istället.