Почему ноль не добавился в массив?
Предикат должен возвращать trueили false. Поскольку вы возвращаете сам элемент, он приводится к логическому типу, соответственно 0 приводится к false.
Лучше делайте так:function filterList(list) {
  return list.filter(item => typeof item !== 'string')
}
0 приводиться к false в данном случае, потому предикат и не возвращает его.
Чем вам typeof не угодил?
UPD:
Твоя задача правильно решается так:function filterList (list) {
  return list.filter(item => !isNaN(+item));
}

console.log(filterList([1,'a','b',0,15] ))