Because Implementation Inheritance does not always guarantee polymorphic subsititutability (i.e. just because TennisBall uses Ball as a base class does not always ensure Ball can be substituted by TennisBall), the tendency is more towards the use of delegates.
Click here for a discussion of Implementation Inheritance.
Basically dude it depends on many things but they are both used in different situations afaik.
I was perhaps not very clear with another difference, but it kinda goes with the expression: "implement an interface" also does mean that the class must write the code for each member of the interface (to fullfill the 'contract' with the interface).
Another main difference is that a class can only inherit one single base class, there can be multiple levels of inheritance but only one-to-one parent-child relation. A class can implement several interfaces.
So, back to the original question, there isn't a "preferred" practice. VB.Net allows you to benefit from both of the methods at the same time. Different languages use both to a greater or lesser extent but to ask "what is the recommended approach in .Net" is purely rhetorical, academic, and certainly not a mutually exclusive relationship.
If I was defining a Car class and a Horse class, Car would inherit Vehicle and Horse would inherit Animal, but both would implement IModeOfTransport. Interfaces are usually used to allow you to treat disparate objects in the same way. As has been said, each method is used in the situations where it is appropriate for that method.