Simply said, any time the use case is not covered by the 170+ built-in processors and you have something really specific you're trying to process. additionally, something that cannot be covered by ExecuteScript processor, which is pretty hard to imagine is even the case as it's pretty powerful already. I guess if you're more comfortable with Java than Groovy, jython, lua or JavaScript, go with building a custom processor but always make sure you exhausted your search by anything built-in.