The code comment is wrong. You can make a reusable GameObject pool without monobehaviour because you can call Object.Instantiate - you just have to pass a prefab GameObject to it on creation. But that could be in a parent class or a pool manager monobehaviour.