[Galaxy Tab 2 7" Android Development] Tsjoklat:
Initially, there was a typo in the gapps backup script (causing one of the camera libraries to not be automatically restored when updating the ROM without re-installing gapps).

When this typo was fixed, the backup script worked as expected and it was not necessary to reinstall gapps after every rom upgrade.

Although, soon I noticed that there was a big difference in directory and file permissions when using the official cyanogenmod gapps compared to the other gapps versions. It turns out that CM11 uses enforced selinux, and when the proper file permissions are set, the gapps backup script is unable to automatically restore the gapps apk files after a rom upgrade. If you are using an Android 4.4 version of gapps, then you want to make sure it has the following "set_metadata_recursive" code in the installation script:

ui_print("Cleaning up and setting metadata...");
set_metadata_recursive("/system/addon.d", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/app", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/priv-app", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/etc/permissions", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/etc/preferred-apps", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/etc/g.prop", "uid", 0, "gid", 0, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/framework", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/lib", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/usr/srec/en-US", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/vendor/pittpatt", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");

If the metadata is not set in the following way mentioned above when selinux is activated, then all of the directory structures will be chmod 777.

So, you also want to make sure that your updater script for gapps in not setting file permissions using the older method because then selinux permissions wont properly be set.

For example, the following "set_perm_recursive" command is not going to work correctly on Android 4.4:

set_perm_recursive(0, 0, 0755, 0644, "/system/app");

The only drawback to setting the proper selinux file and directory settings is that gapps will no longer be able to automatically restore its gapps files on a rom upgrade. You will have to manually apply gapps again after every rom upgrade when the selinux file permissions are set the right way (until a solution is found).