Parece que você modifica a variável $link dentro do loop foreach, então você adiciona item1 a $link, faz um loop através de seus subitens e retorna à primeira iteração e adiciona item2 à variável ...
substitua isso
$link .= "/".$category['url_nl'];
com
$insidelink = $link . "/".$category['url_nl'];
(e altere o $link restante dentro do loop para $insidelink)
Adicionando:Isso também é verdade para $startingLevel. Não modifique, use +1 inline:
echo "<li>".$start." - ".$startingLevel +1.
"<a href='$link'>{$category['menu_nl']}</a> ($link)</li>\n";