Does Service pack have all the changes in a cumulative update
According to SQLServerBuilds SP1 CU15 was released after SP2.

SP1 CU15 was released on 2019-05-16, SP2 was released on 2018-04-24. 

Given that from SQL 2017 there will no longer be any service packs, this is no longer relevant moving forwards, but in the past Microsoft would release fixes in parallel for supported service packs. As an example this kb article describes an issue that had a fix that was included in two separate CU's, CU15 for SP1 and CU7 for SP2.

For confirmation of the data on SQLServerBuilds we can check the file details on both SP2 and CU15 SP1

In addition to this as pointed out by David Browne, there is a development and test overhead for all new SP's, meaning an SP does not necessarily contain all fixes in previous CU's by date - this is due to the time taken for finalising and testing the SP.