gpg-agent with those parameters probably gives you a message:
gpg-agent: gpg-agent running and available
You are not changing that running session, and that is what caches your PIN.
That session is (at least on my Ubuntu 12.04 system) started by the gnome-session, effectively by the script
/etc/X11/Xsession.d/90gpg-agent. On my system it doesn't seem that that file allows for any dynamic commandline option setting for
gpg-agent, so you might have to hardcode those options in there.
You can of course also kill and restart the
gpg-agent, that will let you get rid of the cached pins as well. Just make sure the output of the command goes to the file where the original invocation of
gpg-agent puts it (on my system
At some point my bank's software forced me to take out the smartcard, as a protective measure, after providing my signature/pin. As their software was running on a VirtualMachine, I would just temporarily virtually remove the USB (on which the CardReader was connected) from the host (using a small python script). That would work for you as well if you would be running on a VM.