Because, it will override all other occurrence of the property.
Consider this:
.my-class {
width: 400px;
}
.my-class {
width: 100px!important;
}
After this all the elements having class my-class will be forced to scale to width 100 pixels. Which is bad because you may not notice this, which may create a lot of bug(s) which will difficult to find. The style sheet will not work as planned if you do not know what you are doing. It's not always bad to use !important. But you must know where to use it. And in most cases it's better to avoid it with some well planned CSS.
For more you may look more on CSS specificity. This might help.
Hope this helps. :)