No, it's not merely "stipulated". It follows immediately from fundamental principles (Lorentz invariance, for example) and it's also measured experimentally with extreme accuracy.
Think of it like this. Take a massive particle, and accelerate it by imparting a certain total amount of energy. The more energy you give it, the faster it will end up going, but as the energy gets very large the speed will simply approach c, the speed of light.
At speeds close to the speed of light the momentum is no longer given by mass times velocity. That would approach a maximum m*c, which is not what experiments observe. Instead, the momentum continues to grow as you add more and more energy, and for speeds close to the speed of light the momentum is given by a formula that gets close and closer to p=E/c. The same formula works perfectly for photons.
If you don't like that you can try to think of the momentum of a photon as zero times infinity, where zero is the rest mass and the infinity is related to the amount of energy you'd need to accelerate something of finite mass to the speed of light. That's a distasteful (and rather confusing) way to say it, but it might make clear why the momentum doesn't have to be zero.