Isn’t it just easier to just create enum passing section number and guard against it being nil?

It’s exactly the same.

Using the protocol extension, you don’t need to include the guard clause inside each method. Your enum Section just needs to implement ReusableViewEnum and the protocol extension will handle that for you. But it’s essentialy the same.