Why are clocking blocks preferred when when we want to drive and sample stimulus in a SystemVerilog testbench?

I have seen multiple testbench codes where the driving of stimulus and the sampling are done using clocking blocks. Why is this so? Are there some pitfalls in using the interface directly to drive and sample stimulus?

In reply to vk7715:


In addition to Ben’s answer , here are links for SNUG Paper on Clocking Blocks :