Can I add a column and populate it in a single transaction?
Short: No, you can't.
In earlier versions of Firebird it was allowed, but it produced a bug as it would always update the first column in the table and not the newly added one. As this bug is very hard to fix, developers decided to prevent such updates until the fix is made.
Some tools enforce commiting the transaction to prevent you from discovering the bug. For example, isql has AUTO COMMIT DDL set to ON by default, so it automatically commits the ALTER TABLE ... ADD ... statements, unless you explicitly tell it not to. FlameRobin adds an explicit COMMIT between ALTER and UPDATE when you try to add a new NOT NULL column.