T-SQL OUTPUT DELETED columns by information schema
I find out the way to do it with the dynamic sql, we just need to compose query, where we can select all required column names using information schema and execute it.

Get column names first:

DECLARE @ColumnNamesTable Table([Name] NVARCHAR(MAX));
INSERT INTO @ColumnNamesTable
SELECT [Name] FROM SYS.COLUMNS WHERE OBJECT_ID = OBJECT_ID(N'TableFirst') AND [Name] &lt;&gt; 'Id' 
INTERSECT
SELECT [Name] FROM SYS.COLUMNS WHERE OBJECT_ID = OBJECT_ID(N'TableSecond')


Compose OUTPUT DELETED and column name strings:

DECLARE @OutputDeleted NVARCHAR(MAX), @ColumnNames NVARCHAR(MAX);

SELECT @OutputDeleted = STUFF((SELECT ', DELETED.' + Name FROM @ColumnNamesTable  FOR XML PATH ('')), 1,1,'')
SELECT @ColumnNames = STUFF((SELECT ',' + Name FROM @ColumnNamesTable  FOR XML PATH ('')), 1,1,'')


Compose query:

DECLARE @Query NVARCHAR(MAX), @MyId INT = 5;
SELECT @Query = CONCAT('DELETE FROM dbo.TableFirst OUTPUT', ' ', @OutputDeleted, ' ','INTO dbo.TableSecond(', @ColumnNames,') WHERE Id = ', @MyId)


Finaly we just execute the composed query:

exec sp_executesql @Query;


But we can get issues when there are some FKs.