There is a reason why the most common design choice for progression in games is a more or less linear series of unskippable challenges: Earlier stages often teach the player important skills which they are going to need to properly enjoy later stages. This is called a "difficulty curve".
A common method used in "invisible tutorials" is to present the player with a challenge that is impossible to overcome without using a certain strategy, but becomes trivial if that strategy is employed. This can be a challenge as trivial as "press E to open door", but it can also be a complicated but powerful combination of moves they learned before.
Such an invisible tutorial stage is usually followed by a series of stages where the skill that was just taught gets practiced. This reinforces the knowledge and turns it into muscle memory. For example, when you just taught the player how to open doors, then the next stage should include a whole lot of doors to open, so pressing E as soon as there is a door ahead will become an automatic reflex.
This means that when you design later levels, you can assume that the player is familiar with the mechanics they had to use to complete earlier levels. This allows you to use those mechanics in more challenging and less obvious ways or to introduce mechanics that build upon them.
Now imagine the player skipped those stages that teach and reinforce the knowledge of how to open doors. Now they are in a stage that has a pretty complex puzzle and one element they need to proceed is hidden behind a very inconspicuous door. They aren't aware that doors even can be opened, so they won't be able to reach that element. So they will get frustrated by the seemingly impossible challenge ahead of them.
So by forcing the player to complete the content in your game in a specific order, you can ensure that the player always has all the knowledge they need to properly enjoy the game and have a good game experience. If players gets stuck on certain challenges nevertheless, then that's a sign that you as a designer made a mistake: You didn't properly teach them the skills they need to proceed. Allowing the player to skip that stage would make the problem worse: They don't learn the more advanced skills this stage was supposed to teach them, so the next stage will be an even more frustrating experience for them. The proper solution is usually to insert some obligatory stages in between which provide teaching and practice in the skills the players need to overcome this difficulty spike.
Conclusion: Only let the player skip stages if those stages don't teach them anything they are going to need later. For example, especially difficult "bonus challenges" that require a level of mastery of a certain skill that is beyond what is required to finish any other stages.
However, there is also another reason why players might want to skip stages besides those stages being too difficult: The stage being too easy. The player might have already mastered the skill the stage is supposed to teach and reinforce, so completing it becomes a chore. In that case it might be useful to offer a way to complete such a stage quickly by demonstrating mastery of that skill. For example, a stage that is intended to practice some simple jumping through repetition might be completable instantly by performing a complicated double-walljump-airdash-interrupt technique that actually gets taught a couple stage later.
Adding intentional "skips" like that can also make the game interesting to speedrunners. However, you need to be careful to ensure that the skip only becomes possible if the player definitely mastered everything the stage is supposed to teach them. If the player skips the stage by accident, they might find themselves in a situation where they lack a required skill and get stuck.