What mechanism lies behind adjusting the block gas limit dynamically?
Is it the miner that mined the most recent block who decides whether to adjust the gas limit or not?
How much can the block gas limit vary from block to block when adjusted?
The precise mechanism is defined in Ethereum's Yellow paper (PDF), subsection 4.3.4 Block header validity.
The miner of a new block can set the gas limit within +/- 0.1 % of the parent block's gas limit.