Any time you have a library that needs to be used in a particular way that you can abstract over, and gets used repeatedly. More generally, if you’re writing a macro that abstracts over creating some defintitions, and you realize one of those definitions should be/is already a macro.
For example, the define-ffi-definer macro in Racket. In Rust, the extern block covers this, but you might want to write a bunch of wrapped versions of unsafe FFI calls. Then you write a macro to generate each one, since the pattern for wrapping is pretty similar. But in your next FFI binding, you write basically the same macro, and so on. Instead, there should be a library that abstracts that pattern, instead of copy/paste/modify from binding to binding.
There are lots of other uses cases, but this is a fairly representative one.