Is there a good reason not to use this instead?
Destroy(instance.gameObject, destroyDelay); // iff destroyDelay >= 0
Seems to work, although maybe the MonoBehaviour Coroutine infrastructure is useful later on in the course?
EDIT: Ok, I see what the point of it is now - we want to call finished
after the prefab instance is destroyed, so the ability to use our own Coroutines in the SO is useful.