With Lightning most of my use case has been creating a component and adding it to the Lightning app builder page. I use just to preview my component behavior from developer console.
Having said this I see developers/salesforce docs load the SLDS as static resource and reference it in components using ltng:require
https://developer.salesforce.com/docs/atlas.en-us.lightning.meta/lightning/apps_slds.htm
http://www.sfdcmonkey.com/2016/12/26/use-lightning-design-system-framework/
The major disadvantage I see with this method is getting struck to a specific version and constantly having to update the slds version in the static resource to the latest version from the server. Is there any way I can extend/ implement the force:slds as an interface at a component level?
For the sake of argument if I use only lightning:XXXX components in my code, I will inherit lightning styling by default but this is not possible all the time. When using ui:XXX and custom html components I will have to use the SLDS as a static resource to apply styling on my non lightning:XXXX components.
Am I missing something basic (or) is loading SLDS as a static resource the only way to use SLDS at a component level?