I can't think of an easy way to do this off the top of my head.
One way would be do dynamically generate the TSQL to list the total size of each column in each table which could be done using something like this:
DECLARE @SQL VARCHAR(MAX)
SELECT @SQL = COALESCE(@SQL + CHAR(10) + 'UNION ALL' + CHAR(10), '') +
'SELECT ''' + QUOTENAME(t.name) + ''' AS TableName, ''' + QUOTENAME(c.name) + ''' AS ColumnName, SUM(DATALENGTH(' + QUOTENAME(c.name) + ')) AS TotalSizeBytes
FROM ' + QUOTENAME(t.name)
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE t.name = 'VoterAccount'
SET @SQL = 'SELECT TableName, ColumnName, TotalSizeBytes FROM (' + @SQL + ') x ORDER BY TotalSizeBytes DESC'
PRINT @SQL -- Just PRINT the SQL out. You can then copy it, and execute manually
Which would return e.g.
TableName ColumnName TotalSizeBytes
Table1 Column1 123456789
Table1 Column3 34356464
Table2 ColumnA 33987987
However, my concern is this is likely to be a pretty hefty query to run so I'd think carefully about it first. If there are no better suggestions and you try this, it might be worth restricting it to only look at a subset of columns - i.e. ignore any columns that you know from the start are small in size, focus on the columns you know are likely to be the bigger ones.
The ideal solution would be if this information was already held in system tables/accessible via DMVs somehow - unfortunately I don't know if it is, I've never come across it if it is available.