Given that they have word-for-word identical specs in the standard, it's hard to envisage a reasonable implementation where their runtime cost would differ:
21.4.6 basic_string modifiers [string.modifiers]
21.4.6.1 basic_string::operator+= [string::op+=]
basic_string& operator+=(const basic_string& str);
1 Effects: Calls append(str.data, str.size()).
2 Returns: *this
...
21.4.6.2 basic_string::append [string::append]
basic_string& append(const basic_string& str);
1 Effects: Calls append(str.data(), str.size()).
2 Returns: *this.