I prefer one (classic) difficulty level, both as a dev and a player, for the following reasons:
- DEV: Less balancing work
Just implementing one difficulty prevents you from having to change content to fit all of your difficulty levels, resulting in a lot of work.
- DEV/PLAYER: Shaping the intended experience
Making a game is ultimately telling us something about the one making the game and their vision. Maybe a lower/higher difficulty might actually compromise your vision for the game. As a player I want to know what your game is about, what emotions is it supposed to evoke?
- PLAYER: I want to feel like I beat the game on it's terms, not mine
I enjoy playing hard games, and there are many people who do. There are some people who want to have bragging rights because they beat one game, and I can kind of understand that, but that is not my point. Having the option to just lower difficulty anytime lets me think I could have just "cheated" the game.
I think Celeste is one of these games that handles difficulty well. It is supposed to be hard, and is telling you that, but you get the choice of enabling accessibility options, which let you turn down game speed or give you infinite stamina. In this case the difficulty of the game does not change in itself, but executing the movement for beating stages can be made easier. It is really granular in it's control and I think it is a great system for adjusting "difficulty", which is mostly an accessibility issue.
Pros are: Stages did not need to be redesigned, players are able to experience the game in it's intended form. The accessibility options clearly state that the game is supposed to be challenging, and that they are present to ensure anyone can have fun with the game regardless. I can just keep them turned off and play the game like I want, and I think that's great. Also, I can experience my friends beating this wonderful game aswell, even if they might not be quite skilled enough to do it without these options.
Another thing to consider might be adaptive difficulty. Making the game adjust to the player (even without telling them) can make for a great experience. It is harder to implement, but can be really rewarding. There are games like Wolfenstein that make fun of the player for playing in "Baby Mode", and I think that is a shame. Hiding difficulty at all and adjusting it automatically can really help with the player feeling ashamed about picking lower difficulties.
Or, you know...just pick sensible names! Many games do that well, instead of Easy/Medium/Hard you could name them Story/Classic/Challenge. Maybe even "Classic" might be bad, since that would imply players picking other options are not playing the game as intended. This is a really hard topic to tackle, so I'll just leave you with a great video by Mark Brown covering the options in Celeste :)