A String offers more functionalities than a StringBuilder. The sole purpose of a StringBuilder, as its name implies, is to build a String. 
A String is not less efficient than a StringBuilder (don't know where you got that). It is actually much more efficient, because since it's immutable, you can sefely share references without needing defensive copies. 
And most importantly: performance is usually not the main concern anyway. What matters more is correctness, readability, safety, maintainability. And using an immutable String increases all these factors.
If String is so much better than a StringBuilder, then why do we have a StringBuilder? Because there is one use-case where using a StringBuilder is much more efficient than using a String: constructing a String by repeatedly appending parts:
String s = "";
for (String part: collection) {
    s += part;
}
The above code is slow because many temporary String objects are created and copied, and must then be GCed. In that case, use a StringBuilder:
StringBuilder builder = new StringBuilder();
for (String part: collection) {
    builder.append(part);
}
String s = builder.toString();