both can be implemented in GNU Radio. Correlation of course is more
computationally intensive; I haven’t thought about 4-FSK so far, but I
guess for quadrature demodulation, you’d need multiple branches to
distinguish the possible symbols. There are other approaches (e.g. polar
discrimination by calculating the phase difference between two samples
etc. There’s an exciting new polyphase filterbank channelizer
implementation, also, which you could abuse to do FSK, too).
Generally, if you are synchronized, you might even just estimate the
frequency of a symbol. In the easiest case, this might break down to an
abs(FFT_4) (which, by the way, is mathematically very similar to
correlating with known frequencies).
But since you asked about low-SNR situations: Employ a lot of
oversampling, if possible. Processing gain when correlating/averaging
should be proportional to oversampling factor. Oversampling, giving you
more bandwidth, would also be beneficial if you used a filterbank
approach, since it reduces the need for frequency synchronization in a
practical system, if your FSK shift is sufficiently larger than your
All in all, the question which demodulator architecture to use is an
academic/research one and not related to the implementation in GNU Radio
modulation. This is a highly interesting field and I can but encourage
you to read a lot of books  and papers on this.
Assuming you don’t want phase jumps between symbols, why not just use
the VCO block to generate frequencies out of your input values?
 a nice list: