Because python is broken in this respect -- JS engines do exactly the same object optimisations and get comparisons correct.
Meh. They're different languages with different expectations. "is" is distinct from "==" in both, and Python gets "==" right (obviously). Javascript doesn't really have any high ground here[0]. (In contrast, Python:)
>>> [] == False
False
>>> object() == False
False
>>> "" == False
False
>>> {} == False
False
They're just different.
Python, for example: