When and why should I use $wpdb different return types?

With everything moving towards OOP programming with classes and the use of objects increasing and favored above the use of arrays as such, I would definitely go with returning results as an object. This just makes everything easier for future use

But at the end of the day, you should always use what you are comfortable with within a set scope while keeping up with current and future developments.