Preferred Methods of copying a new database from Development to Production
I'd say the best way (in my opinion, of course) is your 2nd option, SSMS (Generate Scripts).

The reason I say to script out your database is because you will have save-able scripts that you can throw into version control.  If you are only looking for the schema and no data, it's pretty simple to generate.

As for backup and restore, I agree with you.  It's a good way to port databases, but if you need to go through the pain of having a script to remove existing development data, then you are having to go that extra mile (not to mention the possibility of "user error" and not deleting all data, allowing non-prod data in production).

For the third option, writing the T-SQL yourself, that is a very manual process.  Might as well take advantage of SSMS' ability to generate a schema script for your entire database.