Скорее редко, чем часто. Обычно нужно для реализации каких-то паттернов, или для всяких инструментов, библиотек, которым надо переопределять поведение объектов. Довольно экзотическая конструкция, на уровне с генераторами и reflect.
Даже на собеседованиях такое обычно не спрашивают, а в практических задачах уж совсем редко попадается