http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Gauche%3ACygwin
file.utilのexpand-pathで使用される環境変数は$HOMEではなく$HOMEPATHです。 Cygwinの$HOMEPATHは「コンピューターの管理/システムツール/ローカルユーザーとグループ/ユーザー/
/プロファイル/ホームフォルダ/ローカルパス」の設定が元になっています。 その情報を元に/etc/passwdが生成され、ここの設定がCygwinの$HOMEPATHになるようです。 なので、$HOMEと$HOMEPATHが違っている場合、Cygwinインストール前ならWindowsのユーザープロパティーを変更すればよいし、Cygwinインストール後なら両方書き換えておけばよいでしょう。
現在、"~"の展開はgetpwnamもしくはgetpwuidを使って 直接パスワードファイルエントリを読んでホームディレクトリを展開しているので、 環境変数は見ません。
ほー
未検証