Is there a reason to use viewports?

Custom viewports let you confine and scale your drawing to one area of the screen without your drawing code having to know about it or care if you don’t want it to.

So one possible use would be if you had an in-game level editor, maybe with one area on screen that’s a level viewer and the rest is editor widgets. When you draw the level viewer, set a custom viewport and then just call your normal level rendering code. Everything will be contained within that viewport and scaled to fit.