Thank you guys for your response. The funny thing is that the same logic works for some objects such as foreign keys etc.
Just to give some more context on the reason why our code was created in such a way and why we were looking to change it. I am part of a shop that does agile development and there are constantly developing and testing. The idea is that if the able already exists in version 1.0 of he code and users starts testing, then they would not want there test data removed by dropping the table. This would interfere with the progress of their testing.
To address this issue we would not create the table if it exists when we deploy version 1.1 for tests, say the following week.
To address this issue we wrapped this in an EXEC (''). We had a replication issue where one statement was not making it to warm standby that was wrapped in an exec(''). We skipped the tran and ran the statement manually on the WSB as is and it worked (wrapped in exec'').
In another thread on the replication community it was suggested that I don't run these commands as EXEC ('') as replication server sometimes have unusual behavior when processing these statements
Sorry for the long explanation
We will continue with exec ('') as we cannot drop the objects
Thanks for your help team