引数の b と cの間に全角スペースがあるコマンドラインで試すと、System.Environment.CommandLineの結果は、
Framework
4.7.2 "\Debug\net472\VBConsoleCore.exe" a b c
Core
3.0 "\Debug\net3.0\VBConsoleCore.exe" a b c
5.0 \Debug\net5.0\VBConsoleCore.dll a "b c"
6.0 \Debug\net6.0\VBConsoleCore.dll a "b c"
8.0 \Debug\net8.0\VBConsoleCore.dll a "b c"
のようになりました。
どうもSystem.Environment.CommandLineで得られる文字列が.NET Core 5 で変化したっぽい。
.NET 5 での破壊的変更には明確な記述は見つかりませんが、関係あるとしたら文字の判定処理がICUライブラリに変更されたからかもしれない。
Microsoft.VisualBasic.Interaction.Commandはこの文字列に対して処理しているようなので、異なる結果になっているのかも。
提示されたコードから推測すると未加工のコマンドライン引数を取りたいようなので、WindowsAPIのGetCommandLineWを使ってみては?
Module Program
<System.Runtime.InteropServices.DllImport("kernel32.dll", EntryPoint:="GetCommandLineW", CharSet:=Runtime.InteropServices.CharSet.Unicode)>
Private Function GetCommandLine() As IntPtr
End Function
Sub Main(args As String())
Dim commandLine = System.Runtime.InteropServices.Marshal.PtrToStringUni(GetCommandLine())
Dim a = Microsoft.VisualBasic.Interaction.Command
Dim b = System.Environment.CommandLine
Dim c = System.Environment.GetCommandLineArgs()
End Sub
End Module