So I methodically peeled back the layers of the onion on this one.
TLDR; dbt + Snowflake + Key Pair Authentication + Incremental Model = unexpected results.
First, call dbt via DbtCoreOperation.run()
Second, call dbt via trigger_dbt_cli_command()
Third, call dbt via subprocess.run()
Fourth, call dbt via dbtRunner.invoke()
They all produced the same result. In the Snowflake Activity UI, the process of initially building the incremental model was split into two steps: creating the table, and inserting the rows into the table.
Only the first step was being completed, not the second. dbt, however, was reporting success on that operation.
Continuing to peel back the onion.
Fifth, switch the authentication method to Snowflake from key pair to password and continue to use dbtRunner.invoke() to call dbt.
This finally worked.
So, I then left password as the authentication method and moved back to DbtCoreOperaion.run(), because it's the best fit with the Prefect flow this piece of logic executes within. Success.
Sometimes, software engineering is hard.