そのまんまですね!

#! /home/koji/.sdkman/candidates/groovy/current/bin/groovy

// コレが実際のcat処理。1行ずつ読み込んで表示しているだけ
def output (BufferedReader stream) {
    String line
    while((line = stream.readLine()) != null) {
        println line
    }
}

// 引数が有るならそれをファイルとして内容を表示する
if (args.length > 0) {
    args.each { String fileName ->
        def stream = new File(fileName).newReader()
        output(stream)
    }
// 引数がないなら標準入力から読み込む
} else {
    def stdin = new BufferedReader(new InputStreamReader(System.in))
    output(stdin)
}

特に難しい点はありません。
ファイルからの読み込みであろうが、標準入力(System.in)からの入力であろうが、同じBufferedReaderクラスでラップしているので同じ処理を適用できます。

1行目に#! Apache Groovyへのパスを指定しているので、このファイルcat.groovyという名前で保存しておけば、

./cat.groovy hoge.txt piyo.txt

のような感じで実行できます。
※本当はファイルの存在チェックなど必要です