If you do showInputBox, you can receive input from a user.
If you do showQuickPick you can have the user choose from a list.
There is no way to receive input from a user AND show a list of choices.
If you try this with showQuickPick, and the user enters something that is not in the array, undefined is returned.
I think that showInputBox should have an overload that displays options just like in showQuickPick and returns the value instead of undefined if it is not an entry from the array.