藤岡です。

> 私としてはチェックを入れた方がいいと思っています。
> cgi=CGI.new(:encoding=>"UTF-8",:element_encoding_check=>false)
> こんな感じでできると楽かなと。
> ファイルに関してはすべてASCII-8BITがいいと思っています。
> 
* CGI.newのオプションでHashも取れるようにする
 (現状は"html3"などのStringのみ)
* CGIに@@encodingというクラス変数を用意し、default値は"UTF-8"とする
* CGI::encodingとCGI::encoding=というメソッドを用意し、
 @@encodingのセッターとゲッターにする
* CGI.newされたときにオプションで
 CGI.new(:encoding=>"EUC-JP")などと指定されない場合は
 @@encodingの値を@encodingに代入する
* 各々のエレメントの値は@encodingの値でforce_encodingし、
 valid_encoding?する。ただし、fileだけはASCII-8BITとする。
* オプションのときに:element_encoding_check=>falseが与えられたときは
 エンコーディングチェックしない。
* encodingのチェックをして正しくない場合はASCII-8BITに
 force_encodingしてしまう

以上のような仕様ではいかがでしょうか?
サンプルベースで行くと、

require 'cgi'
@cgi=CGI.new("html3")

とやった場合は受け取った値はUTF-8とみなし、encodingのチェックを入れる。
タグメーカーはhtml3とする。
EUC-JPにする場合は

require 'cgi'
CGI::encoding="EUC-JP"
@cgi=CGI.new("html3")

もしくは

require 'cgi'
@cgi=CGI.new(:tag_maker=>"html3",:encoding=>"EUC-JP")

とする。エンコーディングのチェックをしない場合は

require 'cgi'
@cgi=CGI.new(:tag_maker=>"html3",:encoding=>"EUC-JP",:element_encoding_check=>false)

といったようにインスタンスへオプションで渡す。
以上のような使い勝手になります。