Because a is not a const pointer. Therefore, a non-const function is a closer match. Here is how you can call the const function:
const Foo* b = a;
std::string name = b->Name();
If you have both a const and a non-const overload, and want to call the const one on a non-const object, this might be an indication of bad design.