I've programmed both FPGAs and GPUs. They are entirely different and shouldn't be compared with the exception of the small-ish class of tasks that map equally well to both (smaller than you think). FPGAs are more suitable to, say, prototype a new GPU or some other custom IC. It's more "arcane" and "less cost-effective" by definition because you are one abstraction level lower. For further reading, you really need to understand how a hardware design and manufacturing pipeline works to see why FPGAs and GPUs are so apples and oranges.