It sounds to me like you have a pretty good grasp of the hazards.
At the frequencies I imagine you want to switch that relay, (very low) the only reason that the long cables leading to the gate and source of the target MOSFET would have a voltage induced in them that you didn't intend (noise) would be if they are sufficiently far apart, or there's another ground (return) path which is physically separated from them.
Assuming that the ground common to both sides is one of those two wires, then twisting them together, or otherwise ensuring that they run very close to each other, would go a long way to mitigating induced noise, be it magnetically induced, or capacitively.
Since the MOSFET has ridiculously high impedance to ground via its gate, it's true that any noise current induced in the wire could cause serious voltages to appear between the wires, and influence the MOSFET, but the way to deal with that is to ensure that the impedance \$Z\$ around the entire loop is low enough to make induced \$V=I\times Z\$ voltages negligible compared to the MOSFET's gate-source threshold voltage.
The simplest way to do that is to ensure that the impedance between the wires at the MOSFET end is small, say 1kΩ. In fact, the optocoupler in your second circuit would be much better than the first circuit, precisely because the combined impedance of R3 and the LED is in the low hundreds of ohms. Compared to the 47kΩ resistance across the wires in the second circuit, you can expect two orders of magnitude less interference across the LED than the MOSFET's gate and source.
You can fix that easily, by replacing R2 with 1kΩ, assuming your signal source can drive that. If your Arduino output can drive an LED and 220Ω resistor, it can drive 1kΩ.
The second reason you might find the optocoupler works better, is that its response to transients will be much slower.
You can achieve similar rejection of high frequency noise with a capacitor across R2. If you expect to be switching the SSR on and off no faster than, say, 1Hz, then you could use any capacitance which when combined with loop impedances gives you a cutoff frequency somewhat above 1Hz. Don't connect an Arduino output directly across a capacitor, though - place a small resistance in series to keep current sensible when the capacitor is discharged - say another 220Ω
You might end up with something like this:
simulate this circuit – Schematic created using CircuitLab
The thevenin equivalent resistance of R1 and R2 is about 200Ω, meaning noise will be heavily attenuated at freqencies above:
$$ f_C = \frac{1}{2\pi \times 200 \times 1\mu} = 800\text{Hz} $$
Don't forget that the potential divider R1 and R2 will attenuate to 80%, so be sure to use a MOSFET with low \$V_{TH}\$.
This circuit above should perform similarly well to your optocoupler design. Don't rule out the optocoupler option, though, galvanic isolation can very very useful. Considering optocouplers generally have the transistor built in, parts count could even be less.
As for the input impedance of the SSR, again you've hit the nail on the head, this is indeed a concern. However, regardless of the relay, there's no harm at all in placing a resistor between MOSFET drain and +12V (across the relay's inputs), to ensure that drain voltage is guaranteed to rise to +12V when the MOSFET is off, and to help remove potential across the relay's input. It can be many kilohms.