Não há como fazer isso em uma consulta (a menos que você esteja no Laravel 5.7), mas me deparei com o mesmo problema e queria ter certeza de que posso continuar usando um determinado select que construo com o QueryBuilder.
Então, o que você poderia fazer, para manter as coisas metade limpas e reutilizar a funcionalidade que construiu uma instrução select antes, é o seguinte:
/**
* Wherever your Select may come from
**/
$select = User::where(...)
->where(...)
->whereIn(...)
->select(array('email','moneyOwing'));
/**
* get the binding parameters
**/
$bindings = $select->getBindings();
/**
* now go down to the "Network Layer"
* and do a hard coded select
*/
$insertQuery = 'INSERT into user_debt_collection (email,dinero) '
. $select->toSql();
\DB::insert($insertQuery, $bindings);
ATUALIZAR Laravel 5.7
A partir do Laravel 5.7.17 você pode usar ->insertUsing(). Veja aqui para detalhes. Obrigado @Soulriser por apontar isso.
Portanto, a consulta acima ficaria assim:
DB::table('user_debt_collection')->insertUsing(['email','dinero'], $select);