Part Position Issue

Or for a smooth movement, you could use tweens.

local tweenService = game:GetService("TweenService")
local movingpart = script.Parent
local offset = Vector3.new(0, 5, 0)
local originalCFrame = movingpart.CFrame

while task.wait() do
    local upTween = tweenService:Create(movingpart, TweenInfo.new(1.5, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut), {
        CFrame = (originalCFrame + offset)
    })
    
    upTween:Play(); upTween.Completed:Wait()
    upTween:Destroy()
    
    local downTween = tweenService:Create(movingpart, TweenInfo.new(1.5, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut), {
        CFrame = (originalCFrame)
    })

    downTween:Play(); downTween.Completed:Wait()
    downTween:Destroy()
end