Using count() on a field is acceptable because there is an implementation of Countable::count in the ListInterface implemented by ItemList class where it overloads the count method to count the items, from which FieldItemList and EntityReferenceFieldItemList inherit.
So you can use:
$paragraph->field_events->count()
or
count($paragraph->field_events)
synonymously. They do the same thing.
From ItemList.php:
public function count() {
return count($this->list);
}
If you'd like test this, you can play with this simple class. If you remove the "Implements Countable" calling count(a) on object a doesn't return the count() method, but if you add it back, it does. So on a low level, Drupal is using this so you can call count() on fields.