There can be a few different reasons for doing this.
One is to separate the actual work being done and who is doing
it. Have a business logic developer working independently from a
creative web developer.
Another reason would be for re-use. Developing reusable business
logic components makes sense, instead of embedding that logic where
it can't easily be reused in the front end.