This is not a very common issue but it has been seen once in a while. PacketShaper discovers traffic classes based on services. Different services are based on different parameters. Some services are defined by simple parameters in the IP header, whereas others can be more complex and require a deeper look into the packet. The traffic discovery process is CPU intensive, and PS may use a specific/common match to discover a service (even though it may use a bigger subset to actually classify).
One of the most common reasons for the failed discovery is that the PS only sees the traffic in one direction. For example: All the client requests going to the server are not going through the PS but all the responses are. In such a case, some services may get discovered but not others. For PS discovery to work properly, all traffic, client-to-server and server-to-client, should go through the PS.
For example, if you have lots of HTTP traffic but the GET requests are not going through the PS, PS may never discover HTTP (but if you manually create a class, they will hit the HTTP class).
Some network topology changes may be needed to send all traffic through the PS for proper discovery.