SQL Server Merge mandate
No, they don't need to have the same name/number/type of columns (although for the columns you are comparing on in the "join" i.e. the on-predicate, they need to be compatible to compare).

The MERGE statement created according to your example syntax will specify which fields to match on (merge predicate), or insert/update/delete by. If you want to match on CustomerName = Customer, or insert a OrderDate into the Date field, that would be fine.

Think of it as if you are doing an INSERT based on a join, and an UPDATE based on a join, within the single statement. Some people refer to this process as an "upsert"!