4 delete commands wrapped up in a transaction within a stored procedure is absolutely fine, you'd have to delete from the 'bottom up' though.
e.g
BEGIN TRANS
DELETE FROM Table4 WHERE Table1_PK = 1
DELETE FROM Table3 WHERE Table1_PK = 1
COMMIT TRANS
There's nothing wrong with that at all.
You could also enforce cascade deletes on your primary key (Table1) so that we you delete from this table, it automatically deletes all related data
It's up to you how to implement, personally I'm not massively keen on cascade deletes. I prefer to have to explicitly tell a database what to delete and get errors if something is accidentally deleted :)