Почему в js и в php по-разному сравнивают переменные?
Потому что js !== php
На самом деле все на удивление просто:
1) Из-за динамической типизации и логичного кода PHP отлично заходит у новичков со всеми вытекающими, а так как они самоучки, очевидно они скорее всего никогда не слышали о том, что нужно сравнивать переменные строго, плюс PHP не ругается, поэтому зачем писать ===, когда можно написать просто ==?
2) Из-за той же динамической типизации PHP особо не важно что и с чем сравнивать, он все приводит на лету к чему надо, ибо если бы этого не происходило, то все бы падало на каждом шагу, ибо С (на чем он написан) - параноик на типы данных, поэтому === - это по сути просто заглушка.