Apart from the possible issues created by having Virtual GND which has a source impedance of 270 Ohms :- meaning some fraction (~ 270/Zload) of your output signal appears across R10, your output signal rides on top of this common mode signal who's amplitude increases as Zload decreases and approaches R10, this though isn't the source of the oscillation shown in that video (which at one point looked to be around 2Mhz, well above the lmv321 crossover freq), this though is probably tipping the two unstable Max4239's configurations (u1,u4) into oscillation.

Max4239'S are Decompensated op-amps, these are only stable at gains greater than 10. Another way of stating this is that the fraction of Output signal you feed back to the inv input shouldn't be greater than 1/10 .

So adding feedback caps (Like c3,c4 here in Ucurrent schematic) which then at some freq (1/2pi C4 Rf) starts to feedback a greater portion of the output signal will cause any NON unity gain stable Op-amp to become unstable.

There are a number of techniques available to enable use of NON unity gain stable OP's with capacitive loads . One I won't discuss here is a resistor + cap between the op's inputs

http://www.ti.com/lit/an/snoa486b/snoa486b.pdfHere's one I sometimes use with both compensated and decompensated Op's, being useful when a flat response is desired. First decide what is the max value of Capacitive load that we want the Op-amp to be stable with then Cf can be calculated.

I usually make Cf*Rf= Cload*(Rop+Riso). Where Rop is the open loop output impedance of your OP (typically 50-100 but there are exceptions).

Then calculate Cs by making Xcf/Xcs = Rf/Rg . Here for these relatively low frequency OP's we can ignore the small input capacitance (few pF) of the Op-amp which adds to Cs .

One way to describe whats going on here is that initially the gain is set by feedback resistors Rf and Rg then at some frequency (= 1/2pi Cf Rf) the capacitive divider Xcf/Xcs takes over the feedback roll. Because of wider tolerances in capacitors it's not really possible to match Cf/Cs as accurately as you can Rf/Rg so you won't get a perfectly flat response Over your OP's entire B.W .

Addition :- The OP still has to be able to drive the series combo of Cr+Cs : Ct = (Cs*Cf)/(Cs+Cf) and if this get's to large it itself will load down the op-amp, (so then you would try to use lower values by increasing Rf,Rg).

Simpler is indirect drive method :- here the capacative load is simply isolated from the Opamp feedback node by a resistor 'Riso'. I generally choose in both methods to make Riso to be = Rop (usually ~ 50 Ohms varying if I want to achieve a specific Zout or working with unusual opamp's) this should be sufficient to stabilize for capacitive loads of practically any size. Making it larger doesn't really increase stability value, it just means higher Zout.

The major difference between the first and second method is that in the first method Riso is inside the feedback loop so the op-amp reduces the apparent output impedance to approx (Riso/1-Loop Gain) which is very Low (< 1 milliohm at DC). Then at the comp freq ( 1/2pi Cf Rf) the capacitors take over feedback, above this frequency Riso is no longer inside the feedback loop, thus Zout rises to ~ Riso .

With the second method Zout = Riso over the entire B.W , Which doesn't matter here considering the main intended usage (load is usually 10M Zin multi-meter) which results in a tiny measurement error proportional to ~ (Riso/10M).

Unlike the final output amp (U4) which sees the load, the first Max4239 (U1) shouldn't need any compensation, just remove C3 to make this stable. ( the few pF input capacitance of U1 creates a pole with R5||Rf but it's well above Fcrossover so no problem).

Regards Kevin.D