「:any」は「.+」と等価なものですので、使用に問題はないかと思います。
/の有無については量指定子の?などが使用できます。
運用は少し慎重にする必要がありますが、以下のようにすると/以下ごと渡すこともできます。
'test/acterms/(:any)?' => array(array('GET' , new Router::get('programming/test/$1')))
引数についてはtest/acterms/restなどの場合、Controller_Programmingにaction_test($param)を作成すると$paramに'rest'が渡ります。
ただし、Controller_Programming_Restがあればそちらが優先されます。
getパラムはInput::getで取得して条件分岐とするのが良いのではないかと思います。
ルーティングの責務がコントローラーのactionメソッドに行ってしまう点については、
コントローラー側にrouterメソッドを作成して通常のルーティングを無効にする方法が用意されています。