You can use I2C to stream data to the Arduino. I am doing this for another project and can share my experiences. I2C is really good for sensor/chip access.
I would really suggest setting up a serial line between the two for streaming data. This would overcome the 32 byte buffer for I2C. This is your maximum message size for each transmission.
Now to your question. My answer would be yes. I2C transmission the master will always need to use Wire.begin() (for setup), Wire.beginTransmission() and Wire.endTransmission(). After reading the docs, the write does not necessarily transmit right away… it is more queued until endTransmission() is run. The example comments are a little misleading.
On the Arduino(slave) end, you might be using the onReceive() handler to capture these messages. Because this is event driven, if the Master runs too fast and sends another Wire.beginTransmission() before the last read is complete, this can lead to communications bind up as the prior event onReceive() did not complete its work and possibly corrupting the current transmission in progress.
Every time the Master runs Wire.beginTransmission(), the onReceive() handler will fire. It does not matter if you use Wire.endTransmission(true) to hold the line open. This means you need a sufficient delay() after endTransmission() for the slave to read everything sent.
There is no real way for the Master to detect when the Slave has received all its data. If you really wanted to, you can setup an additional digital line between the master and slave so the slave can signal the master when it is done reading.
IE: a digital pin on the Electron would be set for INPUT. The master would initiate Wire.begin() causing the slave to fire an onReceive(). Within onReceive(), the slave would change the state on the digital line. It would continue to read and at the end change the digital line state back. In the meantime, the master would hold until the digital line returns to the original digital state and send the next transmission.