Parece que modifica la variable $enlace dentro del ciclo foreach, por lo que agrega el elemento1 a $enlace, recorre sus subelementos y regresa a la primera iteración y agrega el elemento2 a la variable...
reemplaza esto
$link .= "/".$category['url_nl'];
con
$insidelink = $link . "/".$category['url_nl'];
(y cambie el $enlace restante dentro del ciclo a $insidelink)
Agregar:Esto también es cierto para $startingLevel. No lo modifique, use +1 en línea:
echo "<li>".$start." - ".$startingLevel +1.
"<a href='$link'>{$category['menu_nl']}</a> ($link)</li>\n";