Console autocomplete for complex names
A few minor comments:


Don't mix equality types.

You use suggestion != "" in one place, then !suggestion.Equals(""). Don't. Use the same type of equality (either using .Equals or not using .Equals) everywhere.
Only use non-braced statements in the case of guard clauses, and even then be careful.

Basically, this is OK:

if (Keywords.Length == 0)
    throw new ArgumentException(nameof(Keywords), "No Keywords set!");


This is not:

if (userInput.Length &gt; 0)
    userInput = userInput.Substring(0, userInput.Length - 1);

Try to use built-ins (especially System.Math) when possible.

I.e. take toClear = (userInput.Length &gt; suggestion.Length) ? userInput.Length : suggestion.Length; and convert it to toClear = Math.Max(userInput.Length, suggestion.Length). They're functionally equivalent and the Math.Max reads nicer.


The rest of it looks good, I think you did a pretty good job implementing the idea here. I might suggest building functions out, but this is a small enough program it's probably not necessary.