По сути и widget и beginBlock выполняют одну и туже задачу. Но widget имеет функционал для подключения зависимостей, работы с assets manager + его удобно параметризовать, в нем подразумевается логика какая-то. В блоках - просто повторяющийся html. Соответственно есть задачи где можно использовать то или то, а есть ситуации, где только widget подойдет.