If a client has SolrJ embedded, then it's got a specifically versioned JAR file in it somewhere that it's compiled against. At the moment, there aren't any changes to the SolrJ wire protocol, so clients embedding a 4.x jar will still work.
Correct, this is what I was talking about when I wrote:
There's probably a ton of code out there that uses SolrJ though - so we should strive to either keep SolrJ4 clients compatible with Solr5
If a client wants to upgrade the jar file, then they have to edit their source and recompile, but I think that's expected when going over a major version bump?
Yes, but we can make that easier or harder. Being a client interface, we should normally still strive for compatibility (in general), and think about how to make everyone's life easier when we do make changes. There's no hard-n-fast rules - we should do what makes the most sense.