O>какие еще варианты использования вам пригодились на практике
Можно для AOP использовать.
Т.е. извлекать из expression информацию о вызываемом методе и аргументах.
И дальше анализировать ее, реализуя вещи вроде security, caching, throttling, calls logging, etc.
У Сергея Теплякова в блоге
был хороший пример про кэширование