As you have mentioned that the scanability is important, I think we would need a table along with truncation. However, as rightly mentioned by you, truncation on tables isn't really used that much. Here's the issue with the two approaches you mentioned
Expanding the cell
The biggest challenge with truncation on tables is that the data is in a way fragmented. Each cell is technically a key-value paired data, the key being in the header and the value in the cell below. Truncating both would mean that the user would need to hover on the header first, memorize the header text and then hover on the concerned cell itself to see the value for that particular cell. This would not be a very convenient solution, moreover in some cases, the user might need more focus to hover on the right cell, doing this with the header text in mind would make it even more tedious.
Expanding the entire row
Depending on the content in the entire table, this can cause a lot of disturbance to the overall layout. Also, it still breaks the link between the header and content in the cell, forcing the user to have more eye movement and cognition to understand the data.
With these two challenges, the only solution I can think of is to show both, header and value at a cell level. Something like below (it's a really quick sketch, please ignore the typos in there)
This way the overall layout stays intact while the user can access the data with least effort too.