Это просто характер функции split
согласно спецификации ECMAScript. Вот соответствующая выдержка из spec :
Если объект this является (или преобразуется в) пустой строкой, результат
зависит от того, может ли разделитель соответствовать пустой строке. Если это возможно,
массив результатов не содержит элементов. В противном случае массив результатов
содержит один элемент, который является пустой строкой.
Простой обходной путь для поведения, которое вы ищете, будет выглядеть примерно так:
let arr = !tags ? [] : tags.split(',');