Это не редкость, когда вы хотите изолировать разные блокировки друг от друга в одном и том же классе или если вы хотите использовать одну и ту же блокировку для разных классов. Строго не обязательно создавать указанные классы для каждой отдельной блокировки (можно просто использовать разные экземпляры Object), но это очень помогает при анализе дампов потоков, поскольку будет ясно, какой поток принадлежит какому монитору.
Опасность заключается в том, что вы можете создавать ситуации тупиковой блокировки, если не будете осторожны (поток X блокирует монитор A, поток Y блокирует монитор B, поток X пытается заблокировать монитор B, поток Y пытается заблокировать монитор A).