I have been trying to reproduce the case of badly displaying last columns of a query result-set. I played around with the legal values for psql border variable but not able to find a case where last columns are badly displayed. Can you please share an example that I can use to reproduce this problem. I will try out your patch once I am able to reproduce the problem.
When I played with vertical cursor support I got badly displayed last columns when border was not 2. Only when border is 2, then psql displays last column with same width for each row.
I think so we can force column width alignment for any border styles today (for alignment and wrapping styles) or as minimum this behave can be optional.
I wrote a patch with pset option "final_spaces", but I don't see a reason why we trim rows today.