Instantiate всегда возвращает GameObject (который частный случай Object)
Правильно:
+
Вообще с gameObject в общем случае удобнее работать, применение конкретно отдельных полей (transform, position, rigidbody) может быть оправданно только в узких задачах когда лень писать многозначительные "крюки" .rigidbody.
Если из Instantiate надо вытащить сразу какую-то компоненту:
clone = Instantiate(projectile, transform.position, transform.rotation).rigidbody;