System Accounts vs. Program Accounts
System-owned accounts are simple lamport holders. Program-owned accounts have structured data interpreted by their owner. Program (executable) accounts contain BPF bytecode. Each type has different mutation rules.