Update: You can use a custom ChartElementFunction
that takes bar widths as input:
ClearAll[cEF]
cEF[f_: "BoxWhisker", w_: .5] := {ChartElementData[f][{Mean @ #[[1]] +
{-w, w}/2, #[[2]]}, ##2]} &
Examples:
SeedRandom[1]
data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, {0, 3, 2, 5}}];
Row[BoxWhiskerChart[data[[#]], ChartLabels -> #,
ChartElementFunction -> cEF["BoxWhisker", .5 (Length[#] + .5)/(Length[data] + .5)],
AspectRatio -> 3, ImageSize -> Medium, ChartStyle -> (ColorData[97] /@ #),
PlotRange -> {{0, Length[#] + .5}, MinMax[data]}] & /@
{{1, 2, 3, 4}, {2}, {1, 3}, {1, 2, 4}}]

Row[BoxWhiskerChart[data[[#]], ChartLabels -> #,
ChartElementFunction -> cEF["GlassBoxWhisker", .9 (Length[#] + .5)/(Length[data] + .5)],
AspectRatio -> 3, ImageSize -> Medium,
ChartStyle -> (ColorData[63, "ColorList"][[#]]),
PlotRange -> {{0, Length[#] + .5}, MinMax[data]}] & /@
{{1, 2, 3, 4}, {2}, {1, 3}, {1, 2, 4}}]

Original answer:
Multicolumn[{BoxWhiskerChart[data, AspectRatio -> 3,
ImageSize -> Medium, PlotRange -> {-3, 8}],
BoxWhiskerChart[Join[{{}}, data[[;; 2]], {{}}], AspectRatio -> 3,
ImageSize -> Medium, PlotRange -> {-3, 8}]}]
