So here's the problem that made me bang my head a little. If you set a custom collision callback in the physics.collide() this will not be fired for left or right collisions. I've detailed the issue on github (issue #398). The fix is to add return true; at the end of the Body.hitLeft() and Body.hitRight() methods in the Phaser source code.