I've actually been looking at this too. You can get a OBDII to Arduino interface so you can sample as many PIDs as you want. Coolant temperature, A/C pressure, intake air temperature, ambient air temperature, road speed, throttle position, ASD status, etc. Using all of that you can easily create a program to control the fan and fine tune it well beyond the OEM PCM software.
If you have a SPAL brushless fan, they have about 80 different speeds and and can be controlled by PWM signal. The Arduino is capable of PWM output. Brushless SPAL fans only need a PWM signal, and have their own internal relays and processors, so if you can just amplify the Arduino PWM to about 7 volts or so (peak to peak) using a transistor or MOSFET at up to 10mA, then you need absolutely zero extra controllers or relays other than the fan itself and the Arduino.
In addition, you could easily wire a three-position rocker switch to give the arduino a signal to manually maximize or manually shut off the fan.
One thing I would note is that the standard Arduino isn't all that temperature insensitive. However, there is a company based in the US that makes a bulletproofed Arduino called the Ruggeduino. You can get a version of the standard or the MEGA with either much higher voltage tolerance or much higher temperature tolerance. Both boast improved voltage/temperature profiles, but they each do one even better than the other.
https://www.rugged-circuits.com/
If I ever get around to this, I'll probably 3D print a case and bracket for it. I may just use PETG for simplicity, but I'm eventually going to print some carbon fiber impregnated polycarbonate, so I may just go with that instead.
I've even been toying with the idea of adding Auto Stop/Start and EHPS.