What reduced the noise when multiplying neighbor samples?
You basically squared the signal.  If you were sampling properly fast, then the small shift due to multiplying by the next sample instead of the same sample only had minor effect on high frequencies.

Squaring a signal is a non-linear operation.  The reason it appears to give lower signal to noise ratio is only because your noise was already lower than the signal spikes you are looking for.  Squaring de-emphasizes weak signals proportional to their weak-ness.

For example, consider a raw signal that contains noise with amplitude &plusmn;.1, and the spikes you are looking for go to 1.0.  That is a 10:1 signal to noise ratio.  After squaring, the noise is &plusmn;.01 and the spikes still 1.0, for a apparent ratio of 100:1.

However, in the above example you haven't really reduced the noise relative to the signal, just made the noise less obvious.  Let's say that after looking at the "cleaned" signal, you decide to set the threshold for detecting a spike to 0.5.  This is exactly the same as starting with the original signal and setting the threshold to 0.71.  You only have the illusion of more noise immunity, not actual noise immunity.  Any noise in the original signal rising to 0.71, on in the squared signal to 0.50, will be interpreted as a spike.