Use Kruskal when edges are already sorted or when the graph is sparse. Kruskal works well when you can easily sort edges and you want a simple implementation. Use Prim when the graph is dense or stored as an adjacency list.
Prim is better when you want to find the MST from a specific starting node. Both algorithms produce the same total MST weight. The choice depends on the graph representation and whether edges are pre-sorted.