Recursion is pretty standard in rendering. But with Fermi and beyond, CUDA supports recursion just fine (supposedly). OpenCL doesn't, however. Apparently you can do it manually by creating a stack, but it seems pretty roundabout.
Recursion on GPU, especially if it is in a conditional, is never a good idea.
But even on CPU an explicit stack is often a better idea than recursion.
Function calls are not exactly cheap and if you have a reasonably light-weight function body (e.g., in ray casting), you should avoid recursion.
It cannot really be inlined (quite obviously), the function call will have to flush registers into memory, load function parameters into the registers, set stack and frame pointer and jump. If you have an explicit stack, the compiler has a much better visibility over the whole process and can, for example, make sure that some values that are used all the time (e.g., inverse ray directions) are kept in registers.
Admittedly, the basic path tracing can be written recursively without any really measurable impact (as the body usually does a TON of stuff), but then again, it is generally as easy to write it explicitly and it is not really roundabout.
For the record, the renderer used in the original VCM paper does not use recursion. :-)
Ad big textures: Yeah, big data kills GPU (this paper tries to address is, but the memory is always an issue on GPU:
https://mediatech.aalto.fi/~samuli/publications/laine2013hpg_paper.pdf )