It doesn’t ultimately matter in the sense that you are able to do it either way because it’s not an online game, but you would rather encapsulate that logic in the game mode class over the player controller class. GameMode is server-only level-persistent, PlayerController is local and level-persistent. And in this instance, server = local.
You can create multiple versions of the same level for the the different game modes (or even just composite the levels with i.e the base with environment being the same, but adding i.e TimeTrial checkpoints sub level to the Time Trial version of the level) or if using the same level for everything, determine the game mode override for the level by appropriate launch parameters when opening the level.