Finally got it as I was explaining it to a colleague, I missed a return
function recursiveFilter(category) {
if (category.Description == CURRENT_CATEGORY_DESCRIPTION) {
return true;
}
else {
category.Categories = category.Categories.filter(function (subcategory) { return recursiveFilter(subcategory); });
return subcategory.Categories.length > 0;
}
}