Spy vs. Spy (or Auto-Parameterization Vs. Forced Parameterization)

An interesting thing about auto-parameterization (simple parameterization) is that when SQL Server auto-parameterizes a query it chooses the data type of the input variable based on the size of the value being passed in.  For example, this query:
SELECT Col1 FROM Test WHERE Col1 = 1
produces a query plan with a input parameter of type tinyint.

And these two queries:
SELECT Col1 FROM Test WHERE Col1 = 1000000
SELECT Col1 FROM Test WHERE Col1 = 7745
produce query plans with parameters of type int and smallint.

Forced parameterization doesn’t do this.  With forced parameterization the parameter type is consistent.  The auto-parameterized query:
SELECT Col1 FROM Test WHERE Col1 = 1
that produced a tinyint data type in auto-parameterization produced an int data type parameter in forced parameterization.

You can make SQL Server be consistent for auto-parameterization by casting the literal to a consistent data type. Switching back to simple parameterization and running these queries:
SELECT Col1 FROM Test WHERE Col1 = cast(1000000 as int)
SELECT Col1 FROM Test WHERE Col1 = cast(7745 as int)
produce a parameterized query using an int parameter data type.  We can even tell from the use count that both queries are taking advantage of the same cached parameterized query plan.

Initially I suspected that forced parameterization was using the data type of the column being queried against to determine the data type of the parameter.  However when I switched the data type of the column to a bigint the parameter remained an int.
Is any of this useful?  I don’t know.  It is unclear to me the degree that auto-parameterization will create plans with different input parameter data types and for which data types it does this.