See https://github.com/JuliaLang/julia/issues/4006 and linked discussions. I think the basic reasoning was that matrix square roots are so expensive that the cost of dynamic dispatch is not so big a concern in this case.
The workaround is to add a type assertion at the call site, I guess?