This is how I handle it. The way most people run it, rolling initiative is like the D&D equivalent of the screen wipe before combat in a turn-based video game, and I prefer to avoid such jarring changes in gameplay as much as possible, so I prefer to treat Initiative just like any other ability check. That is to say, I only call for it to be rolled when it’s necessary to resolve an action with an uncertain outcome. When the rogue sneaks up on the unsuspecting goblin (assuming he’s passed whatever checks he needs to pass to do that) and says he tries to kill the goblin by stabbing him in the jugular, there’s no uncertainty in the outcome. No need to roll Initiative, because the goblin has no means of preventing that from happening. When the fighter tries to sucker punch the thug, there’s some uncertainty. The thug might or might not have quick enough reflexes and/or be wise enough to the fighter’s hostility to see it coming. So, we turn to the dice to resolve the uncertainty with an opposed Dexterity (Initiative) check.
Question on your example... why wouldn't the fighter example be a deception-v-insight check by the fighter with the thug to see if the gobby noticed the hostillty much like the rogue had to pass his stealth-v-perception check against the gobby?
Not a criticism but curious as to why the rogue situation moves to the skill check to avoid init altogether but the fight case is always gonna go to init and not a character-v-character skill check to bypass init?
Cannot deception-v-insight generate as much "no means of preventing" as stealth-v-perception?
Couldn't it be that the gobby doesn't know the attack is coming but just turns his head to scratch or shoo away a fly thus creating uncertainty in that perfect jugular strike just like maybe the gobby rolls a good roll on his init he keeps against the fighter?