An excellent question, and as another recent arrival from 3.2.5 land, one that was bugging me as well. Particularly since I found comments by Don here and there about how all queries should be removed from .tcl files.
Further info is in this thread: https://openacs.org/bboard/q-and-a-fetch-msg.tcl?msg_id=0005OL&topic_id=12&topic=OpenACS%204%2e0%20Design and in Don's Porting WP.
As best I can understand, the Query Dispatcher will look, in order, at the db-specific.xql files, the file.xql files and then the file.tcl files for the query spec. So you can comment out or delete the query itself from within the db_foo call (but not the db_foo call itself) in the .tcl file and all works fine.
I finally realized also that the .xql files are generated by the Query Extractor and aren't hand-written (though they need to be scrutinized and possibly edited). All this is in the Porting Resources section, not the first place I would have thought to look for it.