There's 1 small difference: base classes are public, too. Other than that, there's absolutely no difference between the two.
"Also, is there a situation where its best to use one or the other?"
Well, no. I consider the choice a personal preference. That being said, I use "struct" more as it more closely describes the implementation. For example: "struct array", or, "struct stack"; both are "struct"ures. I find that "class" is not as descriptive as "struct" in most cases.
"Or are they synonymous if you are explicit with the encapsulation?"
As you & I said, there's no difference between the two, other than the said differences.