Defclass support inheritance while deftemplates do not. Instance patterns are only triggered when a slot explicitly match in a pattern is changed, whereas any change to a fact will retrigger a fact pattern even if the slot change is not present in a pattern. The creation/deletion of instances has more associated overhead, so in many cases you'll get slightly better performance from fact instead of instances.
If you need inheritance and/or have a fair amount of OO code associated with your objects, then you'll want to use instances. If you can do without inheritance and your solution mostly involves pattern matching without a lot of procedural code, facts will probably be better.
The instance equivalent to retracting a fact is either to send it a delete message or call the unmake-instance function.