No, but you generally need to have created exactly one ShowBase instance for most of the Panda tools to work well. ShowBase is responsible for most of the low-level set up of Panda, so if you don’t create a ShowBase, a lot of stuff is not yet initialized.
But you don’t want to make everything inherit from ShowBase, because it’s important that there is only one ShowBase instance in your application. If you create a second ShowBase, you get other kinds of problems.
You can think of it that way, though really it’s a bit less structured than that. Technically there’s no real reason to require a ShowBase object, except that there’s a fair amount of already-existing code that does assume it exists.
Still, the ShowBase object is the container for a lot of low-level Panda objects, including render (the scene graph) and most importantly, the igloop task, which is where the drawing actually happens.