I would say the biggest difference is that Query Task operates on 1 layer in your service and "selects" the records that match your query. Where as an identify Task can be set up to select from multiple layers in your service and will simply return the records without actually "selecting" them.
As for performance, I do not know. Generally I use the Query task only because I am dealing with editing the records and I must select them inorder to perform any edits (since this is the way I have set up my FeatureLayer service).
Eventhough you are only dealing with 1 layer, you may want to use the Identify Task since it can easily be implemented to select from multiple layers within your service should the need arise. Also, the layer options seem very useful as well such as specifying if you want to identify from ALL layers, top most layer or Visible layers only.
Unless you see a performance issue or have a need to perform advance Selection queries (Query Task), it seems like the identify task should do what you need and allow you to add additional functionality as needed. My two cents...