I don't think the following is good for users:
>>> NearestNeighbors(metric='cosine')
Traceback:
...
ValueError: Metric 'cosine' not valid for algorithm 'auto'
Why should 'auto' not default to 'brute' when trees do not support the metric? Apart from making it easier for users, a user would get an automatic benefit from using 'auto' if a tree implementation eventually appeared.