The first thing that makes Delphi better than VB has always been that Delphi compiles to a true executable. By this I mean that I can make a Delphi program and give the compiled code to my customer without any run-time libraries to slow it down. On the other hand, I used to program in VB. Every time I made even the simplest program, I had to make a setup routine and send at least three disks with my "executable" file and many, many, many run-time libraries to make the code go on the other system.
I heard that with .NET M$ had finally changed it so that VB actually does compile, but it took years upon years, a major rewrite to the "compiler," and hiring one of the Delphi architects away from Borland.
Second and related to the above, true compiled code results in blazing speed. I saw some comparisons where Delphi apps ran 200 times faster than their VB counter parts. Delphi runs at near C++ speed. That is no small accomplishment. One of the advertising slogans from years ago still holds true, "the ease of VB, the speed of C++."
Third, there are things Delphi can do that VB can't. This may be something else that changed with VB.NET, but in VBA (forced to use it even now at work) and the last VB I used, you still couldn't do the following:
recursion
true objects with constructors
linked lists and other dynamic memory functions
Why couldn't you do them? Because M$ said that VB programmers didn't need them (or true compiled code). And while VB guys get frustrated and pull out their hair, Borland gives its customers exactly what they want in Delphi: a language that will produce powerful programs like C++ but be easy to use.