Welcome to the site!
It depends on the protocol being used.
Some protocols have the pool dictate how often the list of transactions is updated, and others have it defined by the mining client.
In Stratum, the pool sends the miner a new merkle branch when it sees a new block or when a certain amount of time has passed. By default, it updates the list of transactions every 60 seconds.
Of course, this is only a default; a pool operator can change this.
In getblocktemplate with longpoll, the pool sends new work on block change, or after 60 seconds. (For bitcoind, at least.)
// Wait to respond until either the best block changes, OR a minute has passed and there are more transactions
checktxtime = boost::get_system_time() + boost::posix_time::minutes(1);
In getblocktemplate without longpoll, the miner looks for new work every so often. 'Every so often' is miner-defined.
cgminer does it every 60 seconds:
static void gen_gbt_work(struct pool *pool, struct work *work)
if (now.tv_sec - pool->tv_lastwork.tv_sec > 60)
bfgminer is user-configurable, but defaults to 60 seconds:
--scan-time <arg> Upper bound on time spent scanning current work, in seconds (default: 60)
Changing work every after the network finds a new block and every 60 seconds is by far the most common way of doing things.