The DDL that defines GTTs remains in the data dictionary. This aspect of GTTs can save you system resources and dbc calls. Everytime you create a volatile table, there are calls to the dbc tables. If you're going to reuse the object on a recurring basis, opt for the GTT. It will be less expensive in the long run.
If it's a one off proposition, use a volatile table.