Understanding the differences in the storage space used by two tables
Based on the information given, one explanation is that the size of the data being stored in the nvarchar(max) column used to be much larger than it is now.  


~12 million historical rows averaging 3.88 KB per row
~24 million live rows averaging 0.23 KB per row


You can double check this by using the dynamic management function sys.dm_db_index_physical_stats on each of the two tables, specifically looking at the "avg_record_size_in_bytes" column.  Something like this:

SELECT 
    DB_NAME(ips.database_id),
    OBJECT_NAME(ips.[object_id]),
    ips.index_id,
    ips.index_type_desc,
    ips.index_level,
    ips.alloc_unit_type_desc,
    ips.page_count,
    ips.record_count,
    ips.min_record_size_in_bytes,
    ips.max_record_size_in_bytes,
    ips.avg_record_size_in_bytes
FROM sys.dm_db_index_physical_stats 
(
    DB_ID(N'YourDatabaseName'), 
    OBJECT_ID(N'CIC_DESLUNGHE'), 
    NULL, 
    NULL , 
    'DETAILED'
) ips;


And

SELECT 
    DB_NAME(ips.database_id),
    OBJECT_NAME(ips.[object_id]),
    ips.index_id,
    ips.index_type_desc,
    ips.index_level,
    ips.alloc_unit_type_desc,
    ips.page_count,
    ips.record_count,
    ips.min_record_size_in_bytes,
    ips.max_record_size_in_bytes,
    ips.avg_record_size_in_bytes
FROM sys.dm_db_index_physical_stats 
(
    DB_ID(N'YourDatabaseName'), 
    OBJECT_ID(N'CIC_DESLUNGHE_STORICI'), 
    NULL, 
    NULL , 
    'DETAILED'
) ips;


Compare the results of the two queries and see if there are any surprising discrepancies.

I left other filters off the function call because this will also show nonclustered indexes.  You didn't mention how you arrived at the numbers in your question, but if they include NC indexes on the tables, perhaps those are contributing to the size difference.