В чем разница между двумя блоками кода?
Если бы вы составили себе труд ознакомиться с описанием метода filter, то знали бы, что он

конструирует новый массив со всеми значениями, для которых функция callback вернула true или значение, становящееся true при приведении в boolean
В первом случае вы возвращаете true, если элемент массива является числом, то есть, в результирующий массив попадают только числа, и неважно, каковы их значения. Во втором случае вы возвращаете сам элемент, если он является числом, а нули, они да - имеют своим булевым эквивалентом false, поэтому и отбрасываются.
У вас во втором блоке кода вообще другой массив arrOne