Well, I did some tests with the M106 G-code. The results were pretty much what I expected. This is with a stock 24V M2E fan. Here are the tests in the order I ran them:

M106 S255 - Fan turns on full, howling like a small banshee...

M106 S127 - Fan is still running fairly fast, but it's a good bit bit quieter.

M106 S100 - Fan is definitely much slower

M106 S90 - Fan stopped

M106 S95 - Fan does not re-start

M106 S100 - Fan is still stopped, but starts up if you blow on it.

M106 S95 - Barely moving, and it's a bit rough & twitchy.

So, as long as you operate somewhere above ~ S110 (roughly 45% cooling), you are probably OK. As long as you work your way down, you can go as low as S100. If you are working your way up, you need to blip it to a safe high speed & then back down. Simplify3D has a check box for this, but I haven't verified its operation for the M2E. I think it may also only work if you are starting from zero.

Even in the range where it spins, I have no idea how linear the air flow drop is in terms of cooling percent.

S95 corresponds to a 37% duty cycle, so the fan controller is off during 2/3 of the full PWM cycle and and the fan coasts longer than that. No wonder it barely moves!

IIRC, Marlin runs the PWM at about 1 kHz, so 37% = 370 us of the total 1000 ms cycle (the other choice is about 500 Hz, where 37% = 750 us of the 2000 ms cycle). That suggests the controller requires a few hundred microseconds to get up & running.

Marlin now includes a "start fan at full speed" option, although AFAICT it's turned off by default and requires compile-time option tinkering to set up.

Simplify3D includes a checkbox to "blip" the fan up to full speed when you are coming up from idle, but I haven't seen any evidence that checking the box does anything on the M2E. It probably only matters in a very narrow range of speeds. For example, in my tests any setting above ~ S105 doesn't need it, and it won't do any good below S95.

One fan terminal goes to +24 V (or whatever the supply might be). The other fan terminal goes to the MOSFET.

A capacitor across the fan will discharge to 0 V when the fan is off, because the MOSFET is not conducting.

When you turn the fan on, the MOSFET turns on, but the capacitor voltage remains at 0 V, because that's what capacitors do for a living: prevent sudden voltage changes. As a result, the MOSFET crowbars the +24 V power supply to ground through the cap, with the current limited only by the MOSFET drain resistance (a tiny fraction of an ohm), the cap's series resistance (another tiny fraction of an ohm), and the PCB+wiring resistances (a small fraction of an ohm).

Assuming the MOSFET survives, the cap charges to +24 V, because it's now connected from +24 V to ground through the MOSFET. When you turn the fan off, the MOSFET must suddenly discharge the cap to 0 V, with the MOSFET current once again limited only by those tiny resistances.

Repeat that cycle often enough, as in every PWM cycle, and the MOSFET will die, guaranteed.

Rules to live by:

Do not put capacitors anywhere in the fan circuit, because they do not do what you think.

Do not put fans with brushless DC motors (that would be any fan) in series to "divide the supply voltage", because that does not work.

Do not apply PWM < 255 to a brushless DC fan motor, because that does not work.

Basically, you cannot control the speed of a two-wire brushless DC motor by changing its supply voltage, because it's not a simple dumb-iron motor. The microcontroller creating the winding waveforms requires a constant DC supply of whatever voltage you read on the sticker and does the best it can to regulate the fan to whatever speed you read on the sticker.

You can get BLDC fans specifically designed for PWM speed control: they're "three wire" fans (*) with a constant supply and a separate PWM control input. The PWM input is 3.3 V or 5 V, not the 12 V or 24 V chopped power from typical RAMPS / RAMBo boards, so you can't just plug them in and have them survive, but some hackery could get the job done.

You need a buck converter to get a 12 V fan supply from the 24 V supply.

I think the default Marlin PWM frequency will not work; IIRC, the fans want something like 25 Hz PWM. That may be do-able by enabling Marlin's software PWM option, but I don't know how that works.

The RAMBo MOSFETs share the heater power supplies, so you can't just change their supply voltage to get the correct logic-level PWM control signal. You'd need a level shifter circuit which could be as simple as a transistor or two; I think a 24 V input will kill ordinary level shifters.

Probably not worth the effort; I'm unconvinced a half-speed breeze makes any real difference in the results. Just run the fan at full throttle or turn it off, as needed.

(*) You can also get "four wire" fans with a logic-level speed sense output for monitoring and stall detection. AFAICT, that's well beyond the capabilities of 3D printer firmware.

BLDC motors do have a "Kv" rating, which is an RPM-per-volt constant. The fan controller will run it at the natural speed of the motor for a given voltage, as opposed to trying to target a specific RPM. A smooth, lower voltage to the fan will produce a smooth, lower speed. Put one on a bench supply and wiggle the voltage knob around.

I just need to know how to retrofit that into the RAMBo...

Custom 3D printing for you or your business -- quote [at] pingring.org

I've got a new problem related to this. I have a PLA filament that warps like crazy, and the best results I've had are from turning the fan off. However, I am running 10% infil, and the top layers over that are full of holes where the filament sags into a void. In essence, it needs to bridge the infil covers. I figured it would help if I turned on cooling for those layers alone. I set it up in S3D to run at 60% for the bottom two layers over the 10% infil regions.

I just watched a test print carefully, and the fan never comes on at all!