This answer is not specific to paper wallets, but I believe it will work for them, or for any source wallet from which you can retrieve (a) private key(s).
The only well-tested and reliable wallets that I know of for BCH and BTG are the Ledger and Trezor hardware wallets and the Coinomi software wallet. Coinomi runs on the Android platform — usually phones and tablets.
However, you can run Coinomi without an Android device. Install the ARC Welder extension on a Chrome Browser, and download the wallet app, coinomi-1.7.10.apk, from https://coinomi.com/downloads
What I did:
(1) Moved my BTC from a local wallet on an internet-connected computer ("old wallet") to a secure offline wallet.
(2) Retrieved the private keys from the old wallet for any transaction in which BTC were received pre-fork(s) and which remained unspent at the time of the fork. (Retrieving a key for a non-qualifying transaction is harmless; at worst it will cost you a little extra effort, and Coinomi will "harvest" no BCH or BTG from it.) Because of step (1), exposure of these private keys to possible compromise (spying, hacking) risks only your BCH and BTG, not BTC.
(3) In Coinomi, created a new wallet for BCH and another new one for BTG. Separately for each of these new wallets, with each relevant private key from step (2), I selected the "Sweep wallet" command from the three-vertical-dots menu at the upper right of the screen and pasted in the private key. (Typing in the key rather than pasting is not only error-prone but runs into some issues with Coinomi-on-Chrome.)
A quirk in Coinomi-on-Chrome: the shortcut key for Paste (Ctrl-V or Cmd-V) may not work for pasting in a private key. Workaround: type any character or two, select what you've typed, and a "Paste" button pops up.
Background on what happens in Coinomi, or any wallet which imports private keys: the wallet software accesses the BTC blockchain and looks up any pre-fork BTC transaction (i.e., any BCH or BTG transaction, respectively) in which coins were sent to a (public) address associated with the private key you entered and which remained unspent at the time of the fork.