I was expecting the Loop to stop
Then your expectation was unreasonable. The tone function is non-blocking, which is a good thing, since you do not want to diddle around in an ISR.
Then the interrupt happens, the tone() function is called, to start a tone sounding. Then, the ISR ends, and loop() resumes. No less than 1/5 a second later, you stop the tone that is happening, or start another tone.
Since freq is not modified in the ISR, it doesn't need to be volatile.