Under what circumstances would using AIDL to define a service interface be the correct decision (rather than just creating an extension to the service
class)?
You need to use AIDL if you want a class outside of your application's process to access the Service. If you're only using the service from inside your application, you can use a local service.