Usually that is the case but it's not necessary. Receive data can be arriving before the SGDMA is started. If that happens then the data should remain buffered in the TSE or any streaming cores between the SGDMA and TSE.
If SGDMA is sitting idle but started and you want to stop it your little widget core just pokes EOP into the data stream and asserts valid to basically stop the DMA (it'll transfer one word of garbage data and complete because end of packet arrived). Turning off the run bit (accidentally called that the stop bit earlier) will prevent the SGDMA from moving onto the next descriptor but it doesn't stop the work on the current descriptor (unfortunately). So that's what my suggestion of the widget works around, the ability to poke a garbage beat of data that terminates the packet early.
I would also look around the TSE documentation, perhaps there is a control register you can write to that will do the same sort of thing I'm suggesting with the widget core.