That is because you are replacing the found range with the formatted paragraph mark preceding the text. Try:
Sub ScratchMacro()
'A basic Word macro coded by Greg Maxey
Dim oRng As Range
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Set oRng = ActiveDocument.Range
With oRng.Find
.Text = "^p[u"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
While .Execute
oRng.Characters.Last = "U"
oRng.Collapse wdCollapseEnd
Wend
End With
lbl_Exit:
Exit Sub
End Sub