BEGINとENDはOracleとSQLServerで予約語ですが、MySQL それらをそのように見なさない 。
ただし、そのPGErrorは、データベースエンジン自体(Ruby関連のランタイムではない)が「終了」のために実際にクエリを拒否したことを示しているように見えます。
引用符で囲まれている場合は、予約語(およびスペースを含む名前)を使用できます。おそらく、ActiveRecordは生成されたSQLの識別子を引用していません。
MySQL(http://dev.mysql.com/doc/refman/5.5/en/query-log.html)のログを見て、生成されたステートメントを確認します。
そして、PGErrorはPostGreSQLを意味し、Heroku(PostgreSQL 8.3)について言及したので、これはENDが実際にPostgreSQLで予約語であるためだと思います: http://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html
http://www.petefreitag.com/tools/sql_reserved_words_checker/?word=end