I like how this turned from "how to do input method detection" to "user-friendly ways to handle input method detection and selection".
I completely agree, it's clear that having the option to disable an input is beneficial. But wouldn't the best approach be an option to disable it in settings, rather than prompting them on startup?
There's another pitfall here. Technically, I'd say this is a good idea for all the reasons you mentioned while also giving them the option to change it if the need arises...
if they can get to the settings screen in the first place, that is.
Touhou 12.3 (or was it 13.5? Long time ago...) has a settings menu where you can freely map and unmap keyboard and controller controls - including mapping them to nothing - but the game thinking that I'm permanently holding up on my controller didn't exactly let me select the Settings option from the main menu without turning the whole ordeal into a boss battle against a slot machine.
... and even when I
did manage to select it and fight my way to the controller bindings, I couldn't unbind them because the game asks you to press the keys to map in a specific order rapid fire dating-style, so it just mapped everything to "Controller Up",
including Confirm, which then confirmed the settings and - on top of moving the menu cursor all over the place - proceeded to also wildly spam Confirm/Cancel at will after returning to the previous menu. Party time.
Unplugging it to unmap the controller controls did the trick, but oof. Took me a while to figure out what the issue even was. This was the game that made me start instantly suspecting controllers whenever games start to exhibit signs of "something wrong"... such as an endlessly scrolling menu, permanently rotating cameras, or the main character being a bit too motivated to hop all over the place.
My main point is that there is no single standard regarding how stuff like this is mapped, so you'll almost inevitably run into a case where your code that works fine for 99% of common controllers doesn't work as you expect for the 1%. Hiding the only way to escape this madness behind something that expects input to work as expected while you basically have the controller equivalent of a drunk sailor is a recipe for disaster.
The majority of players might be mildly bothered by having to select an input source each time they play. They might wonder why it wasn't detected automatically, perhaps even thinking that it's bad craftsman ship (blissfully unaware of the true reason for this decision).
True that! Maybe not display it
every time, but a "first run" setup which is then written to a file and loaded on subsequent runs (as players are unlikely to require changing which input methods to use often) wouldn't bother me too much. I get language and resolution prompts quite frequently when playing games, usually only on the first run, and I've never heard of anyone being bothered by that. I prefer that by a long shot over it defaulting to German when I spend 95% of the day speaking English... or, in this case, game controls engaging in wanton ransacking.
Hence the idea of having the option, but (solely or additionally?) in the form of a setting in a config file - doesn't require any interaction with the game, and while it
is still a bit inconvenient for affected players, at least there
is a solution in the worst-case scenario (provided that it's documented well and they can find it). I'll take either of those over either of the examples I brought up, and those are just the tip of this at times hilarious and at other times frustrating iceberg.
Maybe I should just ditch this one specific controller I somehow managed to get attached to and get a different one... might make my life easier in the long run. I do realize I'm kinda asking for problems by using a DInput controller when XInput is the current de facto standard, but...