Where does the 2G memory requirement for shielded transactions come from?

I’ve looked at FAQ, googled, looked at zkSNARK overview, briefly read portions of zcash github code regarding zkSNARK proof creation, but I am still unsure what is the main reason for the huge memory consumption.

I’ve found this related topic - Memory Requirements Estimation, it says “the memory required to load the network parameters (specifically the proving key) is 2.25 GB”. Could you expand a bit on that? I’d like to understand the internals more.

The proving key is a gigabyte, and needs to be in memory all at once for part of the transaction computation, but there is an experimental feature under development (needs more testing) that’ll cut the memory needed down to just 1.4 gigs