With OSIV the Hibernate Session remains open even beyond the service layer boundaries.
But it's the service layer who's in charge of the transaction logic so the default flush mode is MANUAL. In the service layer the flush mode switches back to AUTO while it get's back to MANUAL for the view part.
The view part will require the session open but since entities are still attached, you don;t want any changes to be propagated to the database. That's why you disable automatic flushing for the UI rendering phase.
As for manual calling flush, I doubt you need that. Both Spring and Seam have transaction management support and the flushing is taken care of by the OSIV implementer.
You need to read this too and decide for yourself whether it's worth the trouble. I only used it once and ever since I've consider OSIV a 'cargo cult programming' anti-pattern.