Well, putting obstacle so that players can figure out mechanics is in my opinion the best way to design a puzzle game! But it has to be in a focused and forgiving environment.
For example, in the level where the shoes are introduced, there is indeed an obstacle that teaches how to use the item. But before that, there are two monsters, and one obstacle that doesn't require shoes. The first ones are distracting, and must be fought after every failure. And the second one is misleading: I thought I had to use the shoes, so i tried to bounce on a wall several time, until I solved it by figuring out that shoes weren't needed for that part.
If the level has to teach something, it has to consist of only one obstacle, that specifically shows how to use the item. Or at least, this obstacle must be the first one the player encounters in the level, and the next ones are also here to make use of the new item.
And as I said, I think some feedback would really help to better understand. To continue on shoes: bouncing on wall with or without them makes almost zero difference. A little sound or animation would make the player understand "look, something is happening here that wasn't happening before, you can do something about it with that new item".
Those are all just suggestions of course. My point is that letting the player figuring things out with obstacles is the absolutely right way to go! The level-design is already great in general, so it only needs a bit of improvements to make this philosophy work.