In init.cpp, search for pszP2SH. That will show you exactly what you need to do to put custom tags in your coinbase.
Is this the same as what pools do with their coinbase signature?
Depends. If the pool uses bitcoind for block assembly, they probably use a similar method. If the pool has custom software that builds the block, that software probably handles the coinbase too.