Seems like whenever I'm making a game where items can be acquired, the same dilemma always comes up. "Should there be a shop in this game?".
One of the reasons for this is that it's almost always beneficial to give the player something to find. Major powerups and weapons are great, but in many cases there aren't enough for them to be an "active" element, from moment to moment. Instead, they act more as goals, and the result of overcoming a challenge. On the other hand, with currency you can..
-Put small amounts of money in common containers.
-Put large amounts in chests,
-Have enemies drop it, making it worthwhile to kill enemies in a game where there is no experience-based system.
What's more, if you place coins around the world the way you would in a Mario game, you can use it to direct the player's attention and further fill space. (Though, this would look cheesy in some games)
Overall, it seems like including a currency is a good thing. But then, what do you include in shops, and what purpose does the currency actually serve long term?
One use of currency is the act of gating content.
For example, if the player can't buy consumables, and there's a finite amount of currency in the world (chests, rewards for quests), then the player needs to accomplish a certain number of tasks before they could buy an item or skill that allows them to get to the next area of the game, or use the currency itself to do so. (such as stars in Mario 64)
By doing this, you can make sure that the player has enough gameplay experience before moving on to the next part of the game, or you could make sure that they've learned certain skills in a safe environment, before moving on to something harder, Personally, I'm not a fan of this kind of thing.
Another use of currency is what is essentially a timer that counts down to acquiring non-essential content. That is, if you ensure that the player will always acquire currency through basic actions , such as defeating enemies, or destroying containers, then it's basically a timer, and once it runs out then the player can buy something new.
That way even if the player can't figure out where to go, or can't beat a certain section, eventually, the timer will allow the player to buy an item that could help them out. Or, if the player hasn't made progress towards getting a new weapon or item that's supposed to spice up the gameplay, then the item from the "timer" might be enough to change how the game plays a bit until they do. Essentially, it keeps the progression moving, and prevents less-skilled players from reaching a stalemate.
World appropriate behavior
Aside from meta-game stuff, currency in games can also be symbolic. The inclusion of currency can help shape a game's theme if it has both gameplay and in-universe implications. For example, consider the following scenario. You encounter two NPCs, and both of them offer you a reward to kill the other.
One offers you 1000 G
The other offers you 10 G
One is clearly the better option, but why is one guy offering so much more gold than the other? I'm sure you can take a guess at why, and how the fact that it's "gold" makes the situation more likely at a glance. If the rewards were 1000 "Light" points and 10 "Pervert" points, then obviously the implications would be different.
That said, the currency should fit the game's theme, and sometimes it's beneficial to have more than one type. You might use "reputation" for one thing, and "energy" for another. For example, "XP" and "gold" are both essentially currencies, but are used to buy different things, and are acquired differently. (Unless you're Dark Souls)
Establishing a currency as that world's "money", specifically, will generally make players perceive it differently. We don't learn how to shoot fireballs or double-jump in real life, but we all understand the concept of "money". It feels natural to try and acquire money in a game, whereas herbs, ore, or other singular resources used for things like crafting might be initially ignored by some players.
What's my point here? Being a thief and stealing "gold", or slaying a dragon and obtaining "renown" are both acquisition of currency, but because both currencies are relevant to the in-game world in different ways, it changes how the player perceives their actions, or character, even though at the end of the day the currency is nothing more than a variable equal to a number.
Or something. If all else fails, use Zenny.
What to buy...
Now, the question is, what should you actually be able to buy with currency?
At least for me, there's a big difference between traversing a difficult area and getting a cool set of armor at the end, as opposed to walking into a store and seeing a list of stuff that you can buy "at some point". Some might say that seeing it in a store makes you look forward to it, and work towards it, but for me, I much prefer the mystery and satisfaction of finding stuff through gameplay and exploration. (Though I will say, there is a certain satisfaction to returning to a store, and finding new stuff they didn't have before)
But again, what to buy? When it comes to consumables or resources (lamp oil, arrows, bullets, one-time use spells), I'm not a fan. However, I'm the type of player who prefers to use attacks that are either free to use, or if they require energy, are easily refilled from moment to moment through combat. Even then, in games like megaman, I'm the type of player that rarely uses the guns you acquire from bosses during normal gameplay. Consumables may work for things like say, Harvest Moon, where it's completely in line with the theme, but for action games, I personally don't like it.
For me, since I prefer the idea of the "timer" method I mentioned earlier, I think the easiest solution is to make shops sell very few "new" things, such as weapons or skills with new animations, but rather things that effect what you already have passively, in a way that can be "felt" or "seen" during gameplay. For example, if you can punch, then there could be an item that makes you punch slower, but harder. Or, an item that makes you gain 3x health when you defeat enemies, but take 2x damage. These items can help to change the way the game is played from moment to moment without adding too much dev time doing new animations or graphics.
Also, while putting items in shops takes them out of the world, no longer able to be found through exploration or overcoming challenges, it does ensure that any player will get those items regardless of skill level. Especially in a game like Noaika, where you retain items when you are defeated,
Of course there are item drops from enemies to consider too, and in general I think that when it comes to item acquisition, correct answer is a combination of every method, with the right balance. It's just that fulfilling each of those roles requires designing a game that can accommodate many different kinds of items, to be acquired through many different means.