A big chunk of memory is used by the virtual function tables of the FastLED library. There's also significant memory usage from the guard variables for the local static controllers in the addLEDs functions.
The problem is that the library authors chose to use the pin number as a template parameter (probably for runtime performance reasons or compile-time checks). This creates a new class for each pin, so the compiler has to create a vtable for every one of these classes, which is extremely expensive.
Here's an overview of the static memory usage of your sketch (minus the string literals):
00000157 b Serial
00000096 b leds6
00000096 b leds10
00000084 b leds11
00000081 b leds5
00000078 b leds9
00000078 b leds7
00000072 b leds8
00000072 b leds4
00000072 b leds3
00000072 b leds12
00000069 b leds2
00000069 b leds14
00000069 b leds13
00000066 b leds15
00000066 b leds1
00000018 d vtable for NEOPIXEL<(unsigned char)9>
00000018 d vtable for NEOPIXEL<(unsigned char)8>
00000018 d vtable for NEOPIXEL<(unsigned char)7>
00000018 d vtable for NEOPIXEL<(unsigned char)6>
00000018 d vtable for NEOPIXEL<(unsigned char)5>
00000018 d vtable for NEOPIXEL<(unsigned char)4>
00000018 d vtable for NEOPIXEL<(unsigned char)3>
00000018 d vtable for NEOPIXEL<(unsigned char)2>
00000018 d vtable for NEOPIXEL<(unsigned char)17>
00000018 d vtable for NEOPIXEL<(unsigned char)16>
00000018 d vtable for NEOPIXEL<(unsigned char)15>
00000018 d vtable for NEOPIXEL<(unsigned char)14>
00000018 d vtable for NEOPIXEL<(unsigned char)12>
00000018 d vtable for NEOPIXEL<(unsigned char)11>
00000018 d vtable for NEOPIXEL<(unsigned char)10>
00000018 d vtable for CPixelLEDController<(EOrder)66, 1, 4294967295ul>
00000018 d vtable for ClocklessController<(unsigned char)9, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)8, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)7, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)6, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)5, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)4, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)3, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)2, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)17, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)16, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)15, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)14, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)12, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)11, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for ClocklessController<(unsigned char)10, 4, 10, 6, (EOrder)66, 0, false, 10>
00000018 d vtable for HardwareSerial
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)9>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)8>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)7>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)6>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)5>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)4>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)3>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)2>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)17>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)16>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)15>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)14>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)12>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)11>(CRGB*, int, int)::c
00000017 b CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)10>(CRGB*, int, int)::c
00000016 d vtable for CLEDController
00000013 b FastLED
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)9>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)8>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)7>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)6>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)5>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)4>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)3>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)2>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)17>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)16>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)15>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)14>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)12>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)11>(CRGB*, int, int)::c
00000008 b guard variable for CLEDController& CFastLED::addLeds<NEOPIXEL, (unsigned char)10>(CRGB*, int, int)::c
00000004 b CFastLED::countFPS(int)::lastframe
00000004 b lastshow
00000004 b timer0_overflow_count
00000004 b timer0_millis
00000002 b CFastLED::countFPS(int)::br
00000002 b CLEDController::m_pTail
00000002 b CLEDController::m_pHead
00000001 b PixelController<(EOrder)66, 1, 4294967295ul>::init_binary_dithering()::R
00000001 b gTimeErrorAccum256ths
00000001 b timer0_fract
This is the output of avr-nm -Crtd --size-sort /tmp/arduino_build_352891/sketch.ino.elf | grep -i ' [dbv] '
.
The first column is the size in bytes.
So looking at the memory usage, it seems more efficient to chain all your small LED strips together, and drive them from one or two pins, instead of connecting each strip to a different pin.