I think SQL gives you better control than a query. There are some instances where the query will not run properly but the string in code will, such as changing recordsources in combo boxes based on another combo box in the form.
The other reason could be a more simple one, which I personally like, which is by placing the sql in code I cut down the number of objects in my application.
There are some SQL statements that cannot be run except for code.
another thought would be the possibility to use transactions (not in your sample code though) using the execute method of the database object and begin, commit and roll back transactions on the parent workspace.
dim wrk as workspace
dim dbs as database
set wrk = workspaces(0)
set dbs = wek.databases(0)