Theoretically using OPEN-FETCH-CLOSE Cursor method and CURSOR-FOR-LOOP one can implement the same functionality.
Incorrect. Mostly the same. But not exactly the same functionality wise.
An explicit cursor fetch allows explicit bulk collection. Having a such a collection allows for explicit bulk binding (using the ForAll statement) in the cursor loop.
An implicit cursor for loop does an implicit bulk collection, courtesy of PL/SQL optimisation. However, one does not have direct access to the collection in the cursor loop, and can thus not reference it for explicit bulk binding.
A bit of a moot point in some respects as both methods would be pulling data from one SQL cursor, and sending that data back via another SQL cursor - which is far more effectively done using a single SQL cursor to do both the reading and writing of data.