I don't think off screen objects get rendered, so there is not much of a performance hit to have them around (but it is still having to loop through all of them every tick and calculate their position).
If you delete all the ones off screen you may also be deleting new ones you are setting up to scroll onto the screen. So, you may want to do something like Sprite.X < -100 then sprite Destroy.
(obviously you have to factor in the width of the platforms to make sure they are completely off the screen)
I believe this is not true. For "sprite is off screen -> destroy" I believe it just deletes that instance of sprite.
Another workaround is create a boolean variable "onScreen" and once the sprites are set on screen, make that instance boolean to true, then once its off the screen check to make sure that the boolean is set to true before its destroyed.
Kind of a workaround, to check to make sure that the platform has made its course of being on screen.
->Sprite is off screen
->Sprite OnScreen is set to True