@table_variable or #temp_table
There are two blogs you should look at.  The first (here) is a comparison of Table Variables and Temp Tables.  It is from 2008 and remains relevant for SQL Server 2008 R2.

The second blog entry (here) deals with some of the misconceptions (missed-conceptions) regarding Table Variables; including indexing a Table Variable.

Both of these blog entries, articles, are written by Gail Shaw.

I believe the one telling item you are looking for is a Table Variable may not be passed between stored procedures while a Temp Table is able to be passed between stored procedures.  The closest a Table Variable comes to passing between stored procedures is as a User-Defined Table Type.  

Passing a Table Variable as a TVP to a stored procedure has the requirement it must be defined as a READ-ONLY parameter.  This implies there will be multiple copies of the Table Variable if you want to return a modified copy of it. 

All told, passing between stored procedure may be better served by a Temp Table when you want to return the passed-in structure with updated values.