The answer depends on other uses of your resources. As far as the DS18B20 is concerned, where the delay comes form is irrelevant.
If your processor is fast and nothing else in your software is going to hold things up, use software delay loops. If the timing is critical because other things might slow the loop down, use interrupts instead.
The DS series are actually quite tolerant of timing, the 'window' for 1's and 0's is quite wide in terms of typical microprocessor instruction cycles.
Brian.