SQL Server: UPDATE permission for table variable
Martin Smith's comment ("Does the subquery itself work?") was ultimately the answer and highlighted my insufficient forensic work! ;-)

The subquery was returning ROW COUNTS from tables:

...
INNER JOIN sys.dm_db_partition_stats AS ddps 
ON i.OBJECT_ID = ddps.OBJECT_ID
...


The fixed roles I was using don't give VIEW DATABASE STATE permission (which is required to view the db_partition_stats table).  So, I'll either need to mess with the roles for these users or find another workaround.

I guess it's worth noting that if you come across this circumstance, you need to deconstruct your query.  The fixed db roles that I refer to CAN CREATE, INSERT, UPDATE, and DELETE records from a table variable.