Can you try running the code below? If this does not give the expected result, can you look in the 'source' script for the resulting table and see if that matches what you expect?
I am a little confused by colNamething1 would work in your script but not colNamething2. Maybe JMP is just happening to pick colNamething1 as a default column to join
colNamething1 = "Name 1 As String";
colNamething2 = "Name 2 As String";
Eval( Eval Expr(
table3 = table1 << Join(
With( table2 ),
By Matching Columns(
Column( Expr( colNamething1 ) ) = Column( Expr( colNamething1 ) ),
Column( Expr( colNamething2 ) ) = Column( Expr( colNamething2 ) )
),
Merge Same Name Columns
)
) );