Blocking is a side effect of transaction isolation, not the fault of SQL SERVER.

Deadlocks are caused by competition for resources. Because deadlocks select victims, deadlocks are not as bad as blocking. However, sometimes in order to solve deadlocks, resources will be locked to prevent blocking.