Один из вариантов - использовать регулярное выражение и требовать границы слов до и после пробела:
var a = " a b c "
console.log(a.split(/\b \b/));
Если разрешены и несловные символы, вы можете использовать match
вместо этого - либо совпадать с пробелами в начале строки, затем с пробелами, либо совпадать с пробелами, за которыми следуют пробелы и конец строка или совпадение без пробелов без ограничения:
const a = " foo @bar c "
console.log(
a.match(/^ *\S+|\S+ *$|\S+/g)
);
Lookbehind - это еще один вариант, но он еще недостаточно поддерживается для обеспечения надежности в рабочем коде.