Using one key for multiple purpose is considered bad style in general. It doesn't directly imply a vulnerability. I violate this principle occasionally if it is convenient for protocol design.
The reason for this is that if you use the same key for multiple schemes you need to consider interactions between the different schemes. With independent keys you don't need to worry about this.
Another concern is that one scheme might get broken allowing key recovery. That key recovery then breaks all parts of your protocol that used that key. For example if you implement a bad MAC algorithm, a break against that algorithm might not only break the authentication but also the confidentiality of your message.
Some practical examples:
- Using AES-CBC for encryption together with AES-CBC-MAC is totally broken if you use the same key.
- Using AES for encryption together with HMAC-MD5/SHA-1/SHA-2 has no known interactions. It is implausible that there are such interactions.
- AES-CCM is a mode that uses AES-CTR for encryption and AES-CBC-MAC as MAC. This mode is provably as strong as AES itself.
These examples show that the practical security of such a combination can range from totally broken to provably secure.