The difference between these two is much similar to Internal and External Memory Fragmentation. From SqlCeEngine.Shrink documentation, Reclaims wasted space in the database by moving empty and unallocated pages to the end of the file, and then truncating