Использование instanceof, когда необходимо переопределить метод equals объекта, поскольку два объекта не могут быть равны, если они имеют разные типы. Я редко сталкиваюсь с другой ситуацией, когда требуется instanceof - возможно, если требуется снижение производительности, но может быть выдано исключение ClassCastException.