Not sure if it's a bug or feature, but you are right, according to the code, create calls save:
public static function create(array $attributes)
{
$model = new static($attributes);
$model->save();
return $model;
}
And save fire the event:
public function save(array $options = array())
{
$query = $this->newQueryWithDeleted();
// If the "saving" event returns false we'll bail out of the save and return
// false, indicating that the save failed. This gives an opportunities to
// listeners to cancel save operations if validations fail or whatever.
if ($this->fireModelEvent('saving') === false)
{
return false;
}
....
Before performing insert (create):
else
{
$saved = $this->performInsert($query);
}
Which fires the creating event
if ($this->fireModelEvent('creating') === false) return false;