EDIT: just realised — already suggested this
Looks like a bug to me. Have you tried doing it without using the sine behaviour? You could just lerp the Y position of the platform and achieve the same result. Then you could see if the problem persists.
If platform.Y is at lowerlevel.Y
--Set Y lerp(lower.y,higher.y,dt*whatever)
If platform.Y is at higherlevel.Y
--Set Y lerp(higher.y,lower.y,dt*whatever)
If this works correctly with the jump through behaviour you won't need to use your workaround.