It's bad if you put it in a header file because you're forcing users of that header file to dump the entire std namespace into their project, which can lead to naming conflicts. For example, I've seen problems on this forum where people will have a function called distance, but std::distance is already a function template, so there can sometimes be ambiguity if the function signatures are too close.
It's not as bad, but still not recommended, to put it in an implementation (.cpp) file, for similar reasons. If you're not careful, you can still introduce naming conflicts, and C++ compilers can give misleading error messages, especially when it comes to templates.
the short answer is it got too big; people no longer know what words not to use in their own programs and can collide with some of its many symbols. Its better to pull in subsets of it.
It's bad if you put it in a header file because you're forcing users of that header file to dump the entire std namespace into their project, which can lead to naming conflicts.
It's actually much worse than that. All headers that happens to be included after your header will also be affected.
1 2 3 4 5 6
#include "your_header.h" // Has using namespace std; inside of it.
#include "other_header.h" // I hope this header will still compile correctly after all the names
// of the standard library has been added to the global namespace. :-S
...
Note that other_header.h might be a totally different library that know nothing about your_header.h but it could still be affected by it.