At my table, it's the DM who decides what you roll, and the player who decides when
Generally, this seems to strike a pretty good balance, assuming both sides are acting in good faith. This seems pretty in line with PHB p.6. In short, I aim to:
- Present the environment
- Listen to what the players would like to do. I encourage them to stay away from mechanical descriptions. They'd like to 'jump the gap', for example, rather than 'roll athletics to jump the gap'
- Tell the players how, mechanically, they can attempt their actions. This oftentimes is telling them what skill they roll to attempt a check.
That's not to say that there's no overlap
It's not uncommon for a player to say "I'd like to jump the gap -- I think an Athletics check would be appropriate."
In a case like this, they'd be absolutely right. Just because I get final say doesn't mean that they're automatically wrong. When first playing with my current group, I'd occasionally hand out Inspiration for players correctly typing their checks -- it gets us away from distracting discussions about skills, and keeps us in the game.
On the other side, I sometimes realise that I haven't included enough information to communicate to the players that something's up, even though their characters would be aware of it.
It's not uncommon for me, as the DM, to prompt appropriate ability checks from time to time. If I haven't portrayed a character quite as shiftily as I'd intended, I'll tell the player that it'd be a good time for an Insight check.
In the past, I've experienced issues when the players state when and what they're rolling.
- Players try for rolls where it's not really applicable
And in cases like this, it's oftentimes just a distraction. Immediately upon entering a room, maybe, the barbarian will shout the result they got on their perception roll, even though there's nothing to notice.
Sometimes a rogue will roll lockpicking knowing that it's not applicable, in the hopes that "maybe something will work if I get a 20".
By having the DM determine if a roll is required, or applicable, it can cut out a lot of little 15-second side jaunts. If the barbarian wants to see what's inside the bar, there's not really a need for a roll. I can just describe what's there without requiring math. If the rogue really wants to try 'picking the lock' on what is actually a featureless slab of stone, there's nothing to even try -- they just fail automatically.
- Players try to roll inapplicable skills
Occasionally I'll have the bard state that they'd like to walk up to guard, and threaten to "set him aflame" if he doesn't cooperate, followed by -- "That's a 23 on persuasion."
The problem here, of course, is that it's an obvious threat -- Persuasion doesn't come into it.
This comes up when a player wants to roll what they're good at, not what's applicable. If the rogue wants to do a running long jump, adding in a backflip isn't going to change it to an acrobatics check. In the past, though, they've definitely tried. By having the DM decide what's rolled, it keeps the game a bit more in line.
- Players miss something important, and it's my fault
And when it happens, I feel terrible.
It happens to every DM at some point, though. Maybe you don't present yourself as lying well (or have gotten used to hiding it). Maybe you forgot to include an important detail in your description of the room 5 minutes back, and it's too late now.
Sometimes it's possible to skip over the detail and just move on, but... maybe it's really, really cool. It would lessen the game to drop it, and it'd be unfair to make the players fail a check that they really can't know about. It might not be 'best practice' for a DM to tell a player when they're making a check, but it's sometimes a good way to recover from your mistakes.