As others have already noted, cheaper and high-power low-resistance MOSFETs are likely the reason - and that did mostly happen in the 1990s.

Something to look at from that period are hobby-grade RC (radio control) cars. Most used NiCad battery packs, and had some extreme amounts of power behind the motors (which were all brushed DC - BLDC was in the future). These motors pulled a lot of amperage (550 and 750 can styles), which the battery packs could deliver, however, there weren't motor controllers small enough to control that much power.

So instead - pretty much up until the 1990s at some point - hobby RC cars used a "resistor speed controller" - something like this one (also known as a "mechanical speed controller":

https://www.rcecho.com/GUIDANCE-FOR-ELECTRIC-POWERED-RC-CAR-... (scroll down a bit to see an explanation)

Basically it was a multi-tapped high-power resistor (or multiple smaller value high-power resistors) that was tapped in a "variable rheostat" manner with a switch operated by a servo. You would usually have three speeds - high (direct to battery), medium, and low; the resistor would "bleed off" excess current as heat (boy, did they get hot!). Yes, it was inefficient, but it was small, robust, and simple to repair or replace.

Of course, there usually wasn't a "reverse gear" (though I am sure someone hacked something together back then). Most of the time, this wasn't a real issue in the hobby - you spent most of your time going forward.

Such controllers actually have a long history - the earliest electric cars used a similar system (just much larger resistors - usually open coil):

http://www.sunrise-ev.com/controllers.htm

http://www.twinkletoesengineering.info/wells_auto_museum/bak...

(some designs also used multi-tapped battery packs for speed control - some in addition to resistors)

Early electric golf carts used them as well (smaller than the electric car version, but still open coil):

https://www.golfcarcatalog.com/golf-cart-blog/put-spring-in-... (scroll about half-way down to see it)

In both cases, switching was done either mechanically, or using large relays or contactors. While it is very inefficient, it is also fairly robust if designed right. Which is why it is still used in a lot of automobiles (though this is rapidly changing with newer models using electronic PWM control) - where?

The AC/heater blower motor! On many cars, there's a "resistor pack" that plugs into the control switch/knob for setting the speed of the blower, and it looks virtually the same as ever - here's one for an older vehicle:

https://www.opgi.com/cutlass/G990031/

But here's one a bit newer:

https://www.turnermotorsport.com/p-11492-final-stage-unit-bl...

About the only difference is the addition of a heat sink. Newer models from even more recent vehicles don't look much different, and they all work on the same principle. They are usually installed in the blower duct work, so that the air rushing by keeps them cool. Unfortunately, if they are designed improperly, or they don't get enough air cooling (or the fan motor dies) - they can heat up extremely hot and melt or catch the car (ductwork - which is usually plastic) on fire! This is especially true if the fan is on "medium" or "low" speeds and the motor seizes (maximum current draw); high speed wouldn't be a problem because the load would short things out and hopefully a fuse would blow (though - not always - sometimes the "fuse" is the wire itself!). This would cause the resistors to get extremely hot - glowing red even - and can cause a fire. I'm certain more than one automotive fire has started this way.

Today, though, thanks to low cost and highly efficient mosfets - and BLDC motors - more and more cars are implementing true variable speed blowers, and using more efficient motors as well. This comes at a cost of more complexity and (depending on how it's implemented) more difficult to repair/replace control and motor systems, but they tend to be safer, and more efficient (this isn't really an issue with ICE vehicles, but very important on electrics for obvious reasons).