How to import long strings at different column positions with SSIS?
I would not assume it will have huge consequences to performance. Handling this is what Varchar(Max) is for and it's very unlikely to have any impact.

Regarding your specific question about alternatives however, the only one is to use sparse column sets. This allows you to pack a lot of potential but usually null columns into one actual XML column. Then they only get stored inside if they are actually used. They can be selected from directly using their column name, though if you Select * then you only get the raw XML column.

Microsoft documentation is here: https://msdn.microsoft.com/en-AU/library/cc280521.aspx