Depends how you look at it.
Behind the scenes with the ListBox, it's very ugly.
The little file called MSVBVMnn.DLL does a bunch of stuff which you aren't even aware about.
First, it has to use CreateWindowEx one extra time. Also, it creates another SubClass instance for the new ListBox. It has to answer every Windows/ListBox message it receives.
Then, you set the Sorted to True. This passes a value to some unknown location in memory, which only VB should even be aware of, which triggers an entire routine which runs the sorting algorithm. Then, it has to update that memory, and it does that in unconventional ways (well, you know Microsoft)... Finally, you have to call a relatively large routine more than once in order to pass all the strings back to their locations in your array.
If you don't use a ListBox...
You do a routine which runs the sorting algorithm.
Both do the same thing, basically. Run an algorithm. Except one tells the runtime to do all the work for it, and the other does the work itself.
Technically, it's faster to not use a ListBox for something like that. But, if you have a small collection of strings (today, small is under 10,000), then, with today's GHZ Processors and GB's of RAM (both are almost in every home! Almost in mine, almost in my friends', almost in my relatives'...) it's identical.