What is the best way of creating a new table in Magento?

Both methods have the same result.
The first one you mentioned was introduces in CE-1.6.
In theory that one is the "more correct" than the second one you mentioned second.
Let's say that through some magic Magento supports (natively) other db engine than MySQL.
If you use the first approach in your extensions you won't have to do anything. The extension will work on the other db engine because there should be a driver that transforms the DDL declaration in the query needed for that specific engine.

If you use the second one you might need to write an other install/update script to fit your new db engine.

If you want to be politically correct you should use the first one, but if you don't plan to use something else other than MySQL you shouldn't care.