В первую очередь они используются во всяких ORM, типа Entity Framework, чтобы лямбды, написанные на C# преобразовывать в SQL.
Во вторую очередь они нужны, чтобы динамически генерировать исполняемый код, например во всяких валидаторах и мапперах, типа Automapper.
В третью очередь - чтобы сериализовывать названия классов и методов, например в Hangfire.