/execute kill requires arguments
Running a command such as
/execute @p ~ ~ ~ kill
requires arguments to be added to kill, despite /kill not requiring any arguments when ran by a player.
A good example would be a command that kills any entity standing on a specific block.
/execute @e ~ ~ ~ detect ~ ~-1 ~ dirt 2 kill @e
This command kills every entity on the map, so ideally we would drop the arguments to kill, so entities kill themselves, but you cannot.