The learn by doing approach sounds so cool, but I've never seen an implementation of it that was even close to as good as a point buy system.
The problem is, even if the devs intend you to naturally make your character good at the things you do with them, they have to assign certain weights to certain actions for each skill. If 1 sneak action were as good at increasing sneak as 1 jumping action is at increasing acrobatics, either sneak is going to level way too slow, or acrobatics will level too fast.
You also run into the issue as a player that you want to be good at certain things. You can play naturally, and hope it happens (lets not even get into all the level scaling problems that happen when blacksmithing improves faster than sword skill), or you do what every good RPG player has done since this system was invented, and grind the hell out of that skill. Casting destruction spells into the sky, purposely wielding a shitty weapon to get lots and lots of hits in on weak enemies, etc.
Here's the problem with that: It's not fun. Going out, wiping out a bandit nest, levelling up, and choosing to spend my level up points on sword fighting is fun. Going out, making sure to NOT use my destruction or restoration spells, because their level is already too high, and using my rusty short sword of shittiness to improve my sword fighting isn't fun. The learn by doing model gets in the way of fun.
Another example would be dungeon crawl. Once upon a time, it had a learn by doing model. So after each kill, players would cast spells over and over, or wield a crappy weapon and beat on weak enemies, to get their desired skills to use the built up XP. It was called victory dancing, and was pretty widely hated.
Now, dungeon crawl uses an allocated skill model. It's essentially a point buy system, except you decide ahead of time where the points you get will go, and you get points from every kill, rather than on level-up. It's much more well liked, and allows the player to just play the damn game.
Learn by doing is realistic, and getting good at skills in real life is boring, repetitive practice. Point buy is a decent approximation of training, but with the negative gameplay aspects stripped away. In the game, I kill everything however I want. When I level up, I decide I was thinking about swordfighting that whole time, so I train that. In one model, I spent my time playing the game in the most fun way possible. In the other, I spent my time playing the game in the way that would train my desired skills, instead of trying to most effectively complete my goal. So which is really more realistic? Would an adventurer really take dangerous risks to get a little more sword practice, or would they just kill their enemies as efficiently as possible?