Heavily depends.
With "traditional singleton" I guess you mean some static state like a static instance.
Then it depends on whether the class is just costly to initialize, or whether it also holds state.
If it holds state, it is a very bad idea to use static stuff, because it will outlive the build execution in the running Gradle daemon and thus influence later builds running on that agent, potentially even builds of other projects also using your plugin.