User programs can’t be trusted if they wish to invoke some functionality in kernel. So whenever they wish to access the OS functionality in kernel they make the use of System Calls. System Calls let the User access the kernel in controlled manner.
However an interrupt is a request from some external device for a response from the processor. There can be software interrupts (generated via a program) or hardware interrupts but the way interrupts are handled remains same.