Yes that is expected unfortunately.
When you "turn off" a flow it doesn't run; however, when you turn the flow back on, it will run for any actions that were conducted while it was turned off. Basically like catching up on work while it was turned off.
I had this happen when I was testing updating a lot of rows and got a similar problem like you had.
I've gotten into the habit of never turning off a flow since I know that issue will come up. If I want to stop a flow from running, I put in a step like Current Time and then whatever step is after the new Current Time step I will change the "Configure Run After" to Failed.
So this says basically, 'run this step only if the previous step (Current Time) fails'. Since I don't expect an automatic step like Current Time to fail, it stops the flow.
You can tell it is in place when the flow arrow changes to red.
Configure Run After
Set to Failed
This isn't a sophisticated answer, but that is how I prevent the flow from running when I don't want it to.