Arc<String> is to Arc<str> what Arc<Vec<u8>> is to Arc<[u8]>.
Assuming that you were able to mutate the contents (e.g. by adding a Mutex), the former would allow you to modify the string in a manner that changes its length, whereas the latter would be a fixed-length slice which only allows you to change the value of the inner bytes.
For immutable content, there isn't really a benefit to using Vec<T> over Box<[T]> other than convenience, as the former is easier to create. And the same holds for String vs str.
Furthermore, the latter may actually be slightly more efficient as IIRC you go through one less pointer.