I *think* Ranorex.Delay calls Thread.Sleep so it is the same thing....only difference is you can specify seconds, minutes etc and Ranorex will scale it before passing to Thread.Sleep and it will output in the progress form.
I usually use Ranorex.Delay if I want users to know a delay is occurring and I use Thread.Sleep when in a loop but I want the last message shown on the progress form to still be show.