Whenever you open or execute a file in Windows, Windows locks the file in place (this is a simplification, but usually true.) You may have encountered those annoying errors where you can't delete a file because another process has an exclusive lock on it. This is why whenever Windows has to update itself you need a reboot for it to take effect. Windows will queue up file replacement and deletion activities for when it next boots up (when nothing has a lock on anything.)
On the other hand, Linux has a mechanism wherein it's not the file that is locked but the underlying data on the disk that is. This may seem a trivial differentiation but it means that the file's record in the filesystem's table of contents can be deleted without disturbing any program that already has the file open. So you can delete a file while it is still executing or otherwise in use and it will continue to exist on disk as long as some process has an open handle for it even though its entry in the file table is gone. This allows Linux to replace a program completely while it's still running and then simply restart the program or just wait for the process to exit naturally. Once the old instance is killed, the old files will no longer exist at all and the new files will have taken up residence in their entries in the file table.
So, as long as a particular file is not special in some way (like, for example, the kernel image file or files belonging similarly low-level systems) the updater can usually update-in-place like this. I'm sure there are special cases and situations where this would not be a good idea, but for most cases it's fine.
As for why OS X does it, that "just in case" theory sounds plausible.
As verified in comments the solution to lagging is to reboot into grub's Advanced Options for Ubuntu menu and select an older kernel.
Going forward try out each new kernel the system installs until one finally works properly. You can tell when a new kernel is being installed because update-initramfs and update-grub run with very unique output. Additionally you will see the new kernels on the grub Advanced Options for Ubuntu menu.
Make sure you do not autoremove the kernel that is working for you now. The only way you can autoremove it is to boot into a newer kernel and type: