It's because when you have higher-order functions (functions that can take other functions as parameters, or return other functions) then having the type after the variable makes your type declarations read left to right instead of in a weird spiral.
Consider this example from an excellent blog about why golang went this route:
int (*fp)(int (*ff)(int x, int y), int b)
It's pretty difficult to tell what's a return type and what's an argument, and you need parentheses to disambiguate a lot of that. It's a major reason why people avoid function pointers like the plague in C. With the type at the end, that ambiguity is removed.