I have Always Asked that Question What is the difference between Remove and Destroy, Does Remove Actually Delete an Object from the Game, Or Destroy?
EDIT: After reading the Wiki, I can now give you a better answer.
Remove() is deprecated in favor of destroy(). So if you're making new scripts, don't use remove(), it only exists for compatibility (so it doesn't wreck everyone's scripts). Remove sets the object and all of its descendants to nil.
Destroy() completely, well, destroys the object and all of its descendants. According to the wiki, destroy() "sets the Parent property to nil, locks the Parent property, disconnects all connections and calls Destroy() on all children."
So who's the winner here?
Destroy() is better. The only reason it's better is because remove() is deprecated and doesn't really remove objects.
The :Destroy() Method completely destroys the object by making it nil and locking it. :remove() just sets the object to nil. While it can still be set back. This is what I heard. Not sure if it's correct.