The reason for the asymmetry is that Latin letters typically have more height than depth, so the baseline of a text row is typically positioned such that 70% of the space is above the baseline and 30% below.
So you see the same thing if you use
\baselinestretch to doublespace rows, the height and depth of a line is increased so typically the space above the top line is increased by more than the space below the last.
In tables the table rows are stacked one above the other with no spacing, and even spacing is achieved by adding a
\strut a 0-width rule that as height and depth set to the normal baseline spacing.
\arraystretch works by simply multiplying the size of the strut so since its height is more than its depth, the height of the strut gets more added space.
array package adds an extra feature
\addtorowheight which adds to the height of the strut, you could copy its internals to give a command to add to the depth, but actually if you use a multiplier to get the depth right you can always fix up the height by adding (subtracting). so
This is a one row one column table.\\\hline