I can tell you from experience that implementing Apex Managed Sharing in a Community Plus Org on Cases isn't something that's trivial. The solution for how best to do it is going to be unique to your particular use case. It's typically done asynchronously and not in real time for a number of reasons, most important of which is that the sharing tables will get recalculated which takes time.
In the implementations, I've done, typically when a new community user is created that meets the criteria you're going to use for sharing all the cases on an Account in your org. When the trigger fires
after insert, typically those Id's are sent via an @future call to either a batch or queuable class where the related Accounts and all their related Cases are queried along with the sharing for them which is then granted to the new user. You can do this from within the trigger itself, but I recommend doing this asynchronously instead.
You'll also want your trigger to fire on
After Update so the sharing is removed when a user is deactivated. Next, you'll also need a trigger on
Cases that uses an @future call to a batchable or queuable to create the sharing for the community users when the record is created if it doesn't already exist. Since you'll likely have more than one user/account for a community, I would send every case to the batch class unless there's a reason you have not to do that.
A large part of why I recommend doing this asynchronously is because you have a Community Plus license, which means you likely have a very large number of users and will have a high volume of records that are constantly being created.
You can find more on Apex Managed Sharing in the Apex Developer Guide, including some sample code.