This is just my take on it.
Although, they are not the same, for executing a piece of code periodically, you can consider them similar.
The main difference comes when Android runs low on resources and decides to kill your service. Using StartServiceAt will allow your service to be invoked again, but if you use a timer, and your service gets killed, it will not start again, and moreover you will not know what state it died in.
Regarding resources:
Memory: This depends on what your service is doing. If it has a variable that holds a LARGE bitmap, then yes, when using a timer and keeping the service alive you are consuming too much memory. But when using StartServiceAt to schedule the service, if you schedule it too frequently you will be loading/unloading the bitmap too often.
CPU Time: I doubt there is much difference, as long as you are not wasting CPU cycles by idly calling a timer or service.
The short answer from me would be: If scheduling too frequent i.e. < 1 minute to 5 minutes a timer is better. If scheduling less frequent 1 hr + then probably services are better.