Both automatically implement isolate() and will only run when the specified input changes. eventReactive is different form observeEvent in that it saves output to a reactive variable, whilst observeEvent just runs code but not save it to a variable.
reactive() on the other hand does not implement isolate and will react to everything inside unless wrapped in isolate()