With ‘short’ row-height, Airtable sets the CSS white-space property to ‘nowrap’. This causes sequences of white-space characters to collapse to a single space. (This is also why embedded newlines appear as a space rather than as a line-break.)
For other row heights, white-space is set to ‘pre’. This preserves embedded space characters and wraps at line breaks. Sequential space characters are treated as multipler spaces, and embedded newlines (’\n’) cause a line break.
To ensure a single space between values, change your formula to
Size&IF(
Subtype,
' '&Subtype
)&IF(
Format,
' '&Format
)
Edit: I should note I didn’t actually check how Airtable sets the CSS property before posting this. I’ve done so in the past, and these are the most likely values, based on performance. That said, Airtable is an extremely complex web app, and it may use other methods to achieve similar outcomes.