It's because of the incompatibility between how Array.prototype.some() calls it's callback and how Array.prototype.includes() expect arguments.
The full definition of [].includes() is:
[].includes(thingToSearch, startSearchFrom);
For example, if you do:
[1,2,3,4,5].includes(1,3); // false
It would return false even though the array clearly includes 1. This is because you told it to start searching from element 3 so .includes() only looked at 4 and 5 and could not find 1.
The full definition of [].some() is:
[].some(function (item, index, theArray) {}, this);
So the .some() will pass the index of the current item to the callback you pass to it. For example if you do:
[10,20,30,40,50].some((x,y) => y == 2); // 30
It would return 30 because he first time .some() loops over the array it passes 10 to x and 0 to y. The second time it passes 20 to x and 1 to y. And the third time y will be 2 so y == 2 is true so it returns the value where it is true which is 30.
Now you can see that what .some() passes as the second argument and what .includes() expects as the second argument have different meanings.
The .some() method will pass the loop index while the .includes() method expect the second argument to tell it where to start searching.
So if you do:
const animals = ["ape", "dog", "pig"];
const nouns = ["car", "planet", "apple", "dog"];
nouns.some(animals.includes);
.. it would search for car in ape,dog,pig,
.. then it would search for planet in dog,pig (remember index is now 1 so you are telling .includes() to ignore ape)
.. then it would search for apple in pig (index is now 2 so .includes() ignores ape and dog)
.. then it would search for dog in an empty array which of course it would not find.
Sure, there may be some algorithm where you want to do this. But I don't think this is what you expect to happen.