I now remember that i actually started off with having this check in AppInitParameterInteraction, but i later moved it to AppInitMain to avoid spurious logging when running unit tests that make use of this. For instance on my bip54 branch:
$ ./defbuild/bin/test_bitcoin -t bip54_tests
Running 4 test cases...
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
Error: The -vbparams option may not be used on mainnet.
*** No errors detected
And after moving the check to AppInitMain instead:
$ ./defbuild/bin/test_bitcoin -t bip54_tests
Running 4 test cases...
*** No errors detected