「should have + 過去分詞」は「〜すべきだった」という意味。後悔するときによく使います。やらなきゃよかったのときは、「shouldn’t have + 過去分詞」。
文法的にはGottenが正しいのですが、口語表現ではGotと過去形を使うことが多いようです。かと言って、Should have doneがShould have didになったりShould have knownがShould have knewにはならないですね。Gotに限ったことのようです。たぶん、Gottenの音の最後が取れた感じでGotとなったのではないかと、私の勝手な憶測です。ネイティブ曰く、どっちでも言うけど、口語ではGotが多いなぁと言っていました。 因みに私は文法博士ではありません(笑)。