most of these numerical algorithms operate on generic functions (i.e. not necessarily polynomials) and make few assumptions about them. if we don't know what given function's nature exactly is, we can't even expect to infer how many roots it might have.
some algorithms there make additional assumptions that given functions are differentiable. this makes them faster but require you to provide some additional info like derivate value so you can't use them for any function anymore.
LaguerreSolver makes additional assumption that given function is a polynomial. is this case it is possible to find all roots, hence solveAllComplex() method. but it is the only algorithm there specialized in polynomials. all the other algorithms are far more generic.