delete records in one table based on multiple column values in second table
Operation 1

Insert records into Table1 that only exist in Table2: 

INSERT INTO Table1
    (address, city, state, zip)
SELECT address, city, state, zip  FROM Table2
EXCEPT
SELECT address, city, state, zip  FROM Table1 ;

Operation 2

Delete records from Table1 where the record is not in Table2 but the city is in Table2.  

(assuming that the columns ar enot nullable. If they allow nulls, it would be better to rewrite the NOT IN with a NOT EXISTS subquery):

DELETE FROM Table1 
WHERE (address, city, state, zip)
       NOT IN
      (SELECT address, city, state, zip  FROM Table2)
  AND city IN
      (SELECT city FROM Table2) ;



As for performance and efficiency, I have almost zero experience with DB2, so it would be better if you waited for some other answer. But an index on all the columns (address, city, state, zip) - on both tables - would probably be the best you can do for the queries, plus a single index on (city). Or perhaps combine the two suggestions in one index with all the 4 columns but choose city for the 1st part of the index: (city, address, state, zip). 

You haven't provided the tables' structure but the 4 columns seem appropriate for a UNIQUE constraint so you may already have such an index.