CheckBlock returns true right away when block.fChecked is set. In the kernel API a btck_Block wraps a shared CBlock, and btck_block_copy only adds a reference, so once a block passed btck_block_check or btck_chainstate_manager_process_block, later calls on it (or on a copy) skip the checks, whatever consensus params or flags are passed. For example a regtest block that has passed once with regtest params also returns 1 from btck_block_check with mainnet params.
bitcoind isn't affected, since it only has one chainstate manager and one set of params. btck_block_check and custom signet params are new in 32.0, and the header docs don't mention this.
Following sedited's review, this no longer copies the block on every call. It only documents on btck_block_check and btck_chainstate_manager_process_block that a block caches its check results and should only be used with one set of consensus parameters.