I'm seeing this too on Windows on a current trunk build. This is causing problems with a demo I'm trying to build.
This is because play is only fired when the element was previously paused. When an element plays through to the end, it does not become paused when it ends. So a second play-through will not fire a second play event. I believe our behaviour is correct wrt to the spec. play may fire before playback actually begins (e.g. if we need to wait for more data before we can play). I think you want to be listening for the playing event, which fires every time the element actually begins playing.
That sounds good. We need to update https://developer.mozilla.org/En/Using_audio_and_video_in_Firefox though Both to add the playing event and fix the description of 'play' which is currently incorrect: "Sent when playback starts or resumes."