Difference between uvm_sequence_item and uvm_transaction

The uvm_sequence_item contains additional variables to allow the object to be utilized on a sequencer/driver. Since the additional overhead is minimal and the goal is to have transactions created during sequences, you should always use uvm_sequence_item and not uvm_transaction.