How likely service id gets changed for an existing well known service? if unlikely, maybe I do not have to retrieve source directory on application start up.
If you are using TREP it depends how it is configured, the services may be hard coded or auto-discovered. If the latter then the service id may change. Also consider infrastructure changes such as implementing hot standby, load balancing, aggregation may affect the "concrete" id presented to consumers.
(1) There has been a TREP release that changed the default service from 1 to 0 which breaks some applications.
(2) You will need a directory if ever using private streams as the stream cannot be initiated if the service is down for which you can only ever tell from the service directory state filter.