конечно создаются лишние элементы, ведь событие поднимается по иерархии и запускает обработчики событий родителей
можно его остановить с помощью
stopPropagation например
li.onmousedown = function(element) {
return function(e) {
e.stopPropagation();
createElementsIn(element, 3);
}
}(li);