SST is AWS-specific and focuses on infrastructure-as-code for serverless apps (CDK wrapper). Encore is cloud-agnostic and works by parsing your application code to understand what infrastructure you need, then provisions it automatically on AWS, GCP, or locally. SST gives you more control over AWS-specific resources, Encore optimizes for development speed and portability. Different trade-offs depending on whether you're locked into AWS or want flexibility.
With SST v3 you're still specifying specific resources in code though, so at implementation time you have to decide which underlying infra you want to use. E.g. will you use Lambda or Fargate, this means using different SST components.
How Encore is different is that you only declare the semantics in code, and then at deploy you decide which infra to use depending on your needs for each environment. Similarly, you can choose at deploy time if you want to colocate services or deploy as separate processes, with no refactoring needed.